hqchart 1.1.12522 → 1.1.12536

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.
@@ -5683,6 +5683,7 @@ this.EnableSave=true;//是否允许保存
5683
5683
  this.EnableCtrlMove=false;//是否按住Ctrl才能移动
5684
5684
  this.OnlyMoveXIndex=false;//只能在X轴刻度上移动
5685
5685
  this.IsSupportMagnet=false;//是否支持磁吸
5686
+ this.EnableMoveCheck=true;//允许移动时监测是否超出边界
5686
5687
  this.IsDrawFirst=false;this.IsShowYCoordinate=false;//是否在Y轴显示点的刻度
5687
5688
  this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];//线段颜色
5688
5689
  //this.LineColor="#1e90ff"; //线段颜色,input type="color" 不支持rgb和rgba 的格式
@@ -5704,7 +5705,9 @@ this.ValueToPoint=function(){if(!this.Frame)return false;var data=this.Frame.Dat
5704
5705
  var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.UpdateXValue=function()//通过datetime更新x的索引
5705
5706
  {if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var aryDateTime=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];if(!item.DateTime)break;var dateTime={Date:item.DateTime.Date};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}data.FindDataIndexByDateTime(aryDateTime);for(var i in aryDateTime){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//xStep,yStep 移动的偏移量
5706
5707
  this.Move=function(xStep,yStep){if(this.Status!=20)return fasle;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==null)return false;var index=parseInt(this.MovePointIndex);if(index===100)//整体移动
5707
- {for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
5708
+ {if(this.IsMoveOutOfBounds(this.Point,xStep,yStep))return false;for(var i in this.Point){this.Point[i].X+=xStep;this.Point[i].Y+=yStep;}}else if(index===0||index===1||index===2||index===3||index===4||index===5){if(index<this.Point.length){this.Point[index].X+=xStep;this.Point[index].Y+=yStep;}}else{return false;}};//是否超出边界了
5709
+ this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep){if(!this.EnableMoveCheck)return false;if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame")return false;var data=this.Frame.Data;if(!data)return false;if(!IFrameSplitOperator.IsNonEmptyArray(data.Data))return false;if(!IFrameSplitOperator.IsNonEmptyArray(aryPoint))return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){//TODO:横屏以后再做
5710
+ return false;}else{var offset=data.DataOffset;var startIndex=0-offset;var endIndex=data.Data.length-offset;if(xStep>0){var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep>xEnd)return true;}}else if(xStep<0){var xStart=this.Frame.GetXFromIndex(startIndex,false);for(var i=0;i<aryPoint.length;++i){var item=aryPoint[i];if(item.X+xStep<xStart)return true;}}return false;}};this.ClipFrame=function(){if(this.Frame.IsHScreen){var left=this.Frame.ChartBorder.GetLeftEx();var top=this.Frame.ChartBorder.GetTop();var width=this.Frame.ChartBorder.GetWidthEx();var height=this.Frame.ChartBorder.GetHeight();}else{var left=this.Frame.ChartBorder.GetLeft();var top=this.Frame.ChartBorder.GetTopEx();var width=this.Frame.ChartBorder.GetWidth();var height=this.Frame.ChartBorder.GetHeightEx();}this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(left,top,width,height);this.Canvas.clip();};//计算需要画的点的坐标option:{IsCheckX:是否检测X值, IsCheckY:是否检测Y值}
5708
5711
  this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var data=this.Frame.Data;if(!data)return null;var showCount=this.Frame.XPointCount;var invaildX=0;//超出范围的x点个数
5709
5712
  var isHScreen=this.Frame.IsHScreen;for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var dataIndex=item.XValue-data.DataOffset;if(dataIndex<0||dataIndex>=showCount)++invaildX;var pt=new Point();if(isHScreen)//横屏X,Y对调
5710
5713
  {pt.Y=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.X=this.Frame.GetYFromData(item.YValue,false);}else{pt.X=this.Frame.GetXFromIndex(item.XValue-data.DataOffset,false);pt.Y=this.Frame.GetYFromData(item.YValue,false);}drawPoint.push(pt);}if(option&&option.IsCheckX===true){if(invaildX==this.Value.length)return null;}}else//移动中
@@ -5778,6 +5781,7 @@ this.Canvas.restore();};this.GetYCoordinatePoint=function(){if(this.IsFrameMinSi
5778
5781
  var aryPoint=[];for(var i=0;i<this.Value.length;++i){var item=this.Value[i];var y=this.Frame.GetYFromData(item.YValue,false);aryPoint.push({Y:y,YValue:item.YValue,Item:item,Color:this.PointColor});}return aryPoint;};}//画图工具-涂鸦线段 Y轴关联数值, X轴不关联
5779
5782
  function ChartDrawGraffitiLine(){this.newMethod=IChartDrawPicture;//派生
5780
5783
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawGraffitiLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=null;this.PointCount=2;//画点的个数
5784
+ this.EnableMoveCheck=false;//允许移动时不监测是否超出边界
5781
5785
  this.PointToValue=function(){if(!this.Frame)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:item.Y,YValue:yValue};this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var yValue=this.Frame.GetYData(item.Y);var valueItem={XValue:item.X,YValue:yValue};this.Value[i]=valueItem;}}return true;};//Value => Point
5782
5786
  this.ValueToPoint=function(){if(!this.Frame)return false;var isHScreen=this.Frame.IsHScreen;this.Point=[];for(var i in this.Value){var item=this.Value[i];var pt=new Point();if(isHScreen){pt.Y=item.XValue;pt.X=this.Frame.GetYFromData(item.YValue);}else{pt.X=item.XValue;pt.Y=this.Frame.GetYFromData(item.YValue,false);}this.Point[i]=pt;}};this.UpdateXValue=function()//通过datetime更新x的索引
5783
5787
  {};this.CalculateDrawPoint=function(option){if(this.Status<2)return null;if(!this.Point.length||!this.Frame)return null;var drawPoint=[];if(this.Status==10){var isHScreen=this.Frame.IsHScreen;for(var i in this.Value){var item=this.Value[i];var pt=new Point();if(isHScreen)//横屏X,Y对调
@@ -5852,7 +5856,7 @@ function ChartDrawPictureTrendLine(){this.newMethod=IChartDrawPicture;//派生
5852
5856
  this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureTrendLine';this.IsPointIn=this.IsPointIn_XYValue_Line;this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){this.LinePoint=[];if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:false,IsCheckY:false});if(!drawPoint||drawPoint.length!=2)return;var ptStart=drawPoint[0];var ptEnd=drawPoint[1];var extendLine=this.CalculateExtendLinePoint(ptStart,ptEnd);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.moveTo(extendLine.Start.X,extendLine.Start.Y);this.Canvas.lineTo(extendLine.End.X,extendLine.End.Y);this.Canvas.stroke();this.RestoreLineWidth();var line={Start:ptStart,End:ptEnd};this.LinePoint.push(line);this.DrawPoint(drawPoint);//画点
5853
5857
  this.Canvas.restore();};}//画图工具-矩形
5854
5858
  function ChartDrawPictureRect(){this.newMethod=IChartDrawPicture;//派生
5855
- this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5859
+ this.newMethod();delete this.newMethod;this.ClassName='ChartDrawPictureRect';this.GetXYCoordinate=this.GetXYCoordinate_default;this.OnlyMoveXIndex=true;this.IsSupportMagnet=true;this.Draw=function(){if(this.IsFrameMinSize())return;var drawPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!drawPoint||drawPoint.length!=2)return;this.AreaColor=IChartDrawPicture.ColorToRGBA(this.LineColor,0.3);this.ClipFrame();this.Canvas.strokeStyle=this.LineColor;this.SetLineWidth();this.Canvas.beginPath();this.Canvas.rect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.stroke();this.RestoreLineWidth();//透明背景
5856
5860
  this.Canvas.fillStyle=this.AreaColor;this.Canvas.beginPath();this.Canvas.fillRect(drawPoint[0].X,drawPoint[0].Y,drawPoint[1].X-drawPoint[0].X,drawPoint[1].Y-drawPoint[0].Y);this.Canvas.restore();//画点
5857
5861
  this.DrawPoint(drawPoint);};//0-10 鼠标对应的点索引 100=鼠标在正个图形上 -1 鼠标不在图形上
5858
5862
  this.IsPointIn=function(x,y,option){if(this.IsFrameMinSize())return-1;if(!this.Frame||this.Status!=10)return-1;var data=this.Frame.Data;if(!data)return-1;var nIndex=this.IsPointInXYValue(x,y,option);if(nIndex>=0)return nIndex;var aryPoint=this.CalculateDrawPoint({IsCheckX:true,IsCheckY:true});if(!aryPoint||aryPoint.length!=2)return-1;//是否在矩形边框上
@@ -7916,9 +7920,11 @@ if(isFutures&&yClearing&&item.Close)item.Increase=(item.Close-yClearing)/yCleari
7916
7920
  //上次价格
7917
7921
  if(IFrameSplitOperator.IsNumber(jsData.price))preClose=jsData.price;if(IFrameSplitOperator.IsNumber(jsData.avprice)&&item.AvPrice===jsData.avprice)preAvPrice=jsData.avprice;if(jsData.ExtendData)item.ExtendData=jsData.ExtendData;//扩展数据
7918
7922
  aryMinuteData[i]=item;}return aryMinuteData;};//分钟增量数据 stock: [ { date:, yclose:, yclearing: , minute:[ [],]} 0=日期 1=时间 2=开 3=高 4=低 5=收 6=均价 7=量 8=金额 9=涨幅 10=涨跌 11=领先指标 ]
7919
- MinuteChartContainer.JsonDataToUpdateMinuteData=function(data){if(!data||!data.stock)return null;var stock=data.stock[0];if(!IFrameSplitOperator.IsNumber(stock.date))return null;var symbol=data.stock[0].symbol;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var minuteData={Date:stock.date,Data:[],Symbol:symbol,Name:stock.name};var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA;//扩展数据序号
7920
- if(IFrameSplitOperator.IsNumber(stock.high))minuteData.High=stock.high;if(IFrameSplitOperator.IsNumber(stock.low))minuteData.Low=stock.low;if(IFrameSplitOperator.IsNumber(stock.yclose))minuteData.YClose=stock.yclose;if(IFrameSplitOperator.IsNumber(stock.YClearing))minuteData.YClearing=stock.yclearing;if(IFrameSplitOperator.IsNonEmptyArray(data.stock[0].minute)){for(var i=0;i<stock.minute.length;++i){var jsData=stock.minute[i];var item=new MinuteData();item.Date=jsData[0];item.Time=jsData[1];item.Open=jsData[2];item.High=jsData[3];item.Low=jsData[4];item.Close=jsData[5];item.AvPrice=jsData[6];item.Vol=jsData[7];item.Amount=jsData[8];if(IFrameSplitOperator.IsNumber(jsData[9]))item.Increase=jsData[9];if(IFrameSplitOperator.IsNumber(jsData[10]))item.Risefall=jsData[10];if(IFrameSplitOperator.IsNumber(jsData[11]))item.Lead=jsData[11];if(jsData[extendDataIndex])item.ExtendData=jsData[extendDataIndex];item.DateTime=item.Date.toString()+" "+item.Time.toString();if(isSHSZ)item.Vol=item.Vol/100;//沪深股票原始单位股
7923
+ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data){if(!data||!data.stock)return null;var stock=data.stock[0];if(!IFrameSplitOperator.IsNumber(stock.date))return null;var symbol=data.stock[0].symbol;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol);//国内期货, 纽约期货交易所
7924
+ var minuteData={Date:stock.date,Data:[],Symbol:symbol,Name:stock.name};var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA;//扩展数据序号
7925
+ if(IFrameSplitOperator.IsNumber(stock.high))minuteData.High=stock.high;if(IFrameSplitOperator.IsNumber(stock.low))minuteData.Low=stock.low;if(IFrameSplitOperator.IsNumber(stock.yclose))minuteData.YClose=stock.yclose;if(IFrameSplitOperator.IsNumber(stock.YClearing))minuteData.YClearing=stock.yclearing;if(IFrameSplitOperator.IsNonEmptyArray(stock.minute)){for(var i=0;i<stock.minute.length;++i){var jsData=stock.minute[i];var item=new MinuteData();item.YClearing=minuteData.YClearing;item.YClose=minuteData.YClose;item.Date=jsData[0];item.Time=jsData[1];item.Open=jsData[2];item.High=jsData[3];item.Low=jsData[4];item.Close=jsData[5];item.AvPrice=jsData[6];item.Vol=jsData[7];item.Amount=jsData[8];if(IFrameSplitOperator.IsNumber(jsData[9]))item.Increase=jsData[9];if(IFrameSplitOperator.IsNumber(jsData[10]))item.Risefall=jsData[10];if(IFrameSplitOperator.IsNumber(jsData[11]))item.Lead=jsData[11];if(jsData[extendDataIndex])item.ExtendData=jsData[extendDataIndex];item.DateTime=item.Date.toString()+" "+item.Time.toString();if(isSHSZ)item.Vol=item.Vol/100;//沪深股票原始单位股
7921
7926
  if(IFrameSplitOperator.IsNumber(minuteData.YClose)&&item.Close)item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100;//涨幅 (最新价格-昨收)/昨收*100;
7927
+ if(isFutures&&minuteData.YClearing&&item.Close)item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100;//涨幅 (最新价格-昨结算价)/昨结算价*100;
7922
7928
  minuteData.Data.push(item);}}return minuteData;};MinuteChartContainer.JsonDataToMinuteLineColorData=function(data){if(!data||!data.stock[0])return null;var stockItem=data.stock[0];if(!stockItem.linecolor||!IFrameSplitOperator.IsNonEmptyArray(stockItem.linecolor.data))return null;var aryLineColor=[];for(var i in stockItem.linecolor.data){var item=stockItem.linecolor.data[i];if(!IFrameSplitOperator.IsNumber(item.type)||!IFrameSplitOperator.IsNumber(item.date)||!IFrameSplitOperator.IsNumber(item.start)||!IFrameSplitOperator.IsNumber(item.end)||!item.color)continue;if(item.start>=item.end)continue;var newItem={Type:item.type,Date:item.date,Start:item.start,End:item.end,Color:item.color};if(IFrameSplitOperator.IsPlusNumber(item.linewidth))newItem.LineWidth=item.linewidth;aryLineColor.push(newItem);}return aryLineColor;};//获取最后的数据更新时间
7923
7929
  MinuteChartContainer.JsonDataToMinuteLastUpdateTime=function(data){if(!data||!data.stock[0])return null;var stock=data.stock[0];if(!IFrameSplitOperator.IsNumber(stock.date)||!IFrameSplitOperator.IsNumber(stock.time))return null;return{Date:stock.date,Time:stock.time};};MinuteChartContainer.JsonDataToHistoryMinuteLastUpdateTime=function(data){if(!data||!data.updatetime)return null;var item=data.updatetime;if(!IFrameSplitOperator.IsNumber(item.date)||!IFrameSplitOperator.IsNumber(item.time))return null;return{Date:item.date,Time:item.time};};//多日日线数据API 转化成array[];
7924
7930
  MinuteChartContainer.JsonDataToMinuteDataArray=function(data){var symbol=data.symbol;var upperSymbol=symbol.toUpperCase();var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);var isSHO=MARKET_SUFFIX_NAME.IsSHO(upperSymbol);//上海股票期权
@@ -12634,7 +12640,7 @@ function HQChartScriptWorker(){this.Create=function(){var _this60=this;addEventL
12634
12640
  hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,Stock:{Symbol:message.Symbol},Request:{MaxDataCount:500,MaxMinuteDayCount:5},Period:message.Period,Right:message.Right,Data:hisData};if(IFrameSplitOperator.IsNumber(message.HQDataType))stockObj.HQDataType=message.HQDataType;indexConsole.ExecuteScript(stockObj);};this.OnRecvMessage=function(message){var data=message.data;if(!data)return;if(data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT){if(!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex))return;for(var i=0;i<data.AryIndex.length;++i){var item=data.AryIndex[i];this.ExecuteScript(item,data);}}};this.OnExecuteFinish=function(data,indexInfo,jsExectute){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT};postMessage(message);};this.OnExecuteError=function(error,indexInfo){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
12635
12641
  * 版本信息输出
12636
12642
  *
12637
- */var HQCHART_VERSION="1.1.12521";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12643
+ */var HQCHART_VERSION="1.1.12535";function PrintHQChartVersion(){var log='*************************************************************************************************************\n*\n* HQChart Ver: '+HQCHART_VERSION+' \n* \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n*************************************************************************************************************\n';console.log(log);}PrintHQChartVersion();//把给外界调用的方法暴露出来
12638
12644
  exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
12639
12645
  // BaseIndex:BaseIndex,
12640
12646
  // ChartLine:ChartLine,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "hqchart",
3
3
  "description": "stock chart",
4
4
  "author": "jones2000",
5
- "version": "1.1.12522",
5
+ "version": "1.1.12536",
6
6
  "main": "lib/main.js",
7
7
  "private": false,
8
8
  "license": "Apache License 2.0",
@@ -50645,6 +50645,7 @@ function IChartDrawPicture()
50645
50645
  this.EnableCtrlMove=false; //是否按住Ctrl才能移动
50646
50646
  this.OnlyMoveXIndex=false; //只能在X轴刻度上移动
50647
50647
  this.IsSupportMagnet=false; //是否支持磁吸
50648
+ this.EnableMoveCheck=true; //允许移动时监测是否超出边界
50648
50649
 
50649
50650
  this.IsDrawFirst=false;
50650
50651
  this.IsShowYCoordinate=false; //是否在Y轴显示点的刻度
@@ -50993,6 +50994,8 @@ function IChartDrawPicture()
50993
50994
  var index=parseInt(this.MovePointIndex);
50994
50995
  if (index===100) //整体移动
50995
50996
  {
50997
+ if (this.IsMoveOutOfBounds(this.Point, xStep, yStep)) return false;
50998
+
50996
50999
  for(var i in this.Point)
50997
51000
  {
50998
51001
  this.Point[i].X+=xStep;
@@ -51013,6 +51016,56 @@ function IChartDrawPicture()
51013
51016
  }
51014
51017
  }
51015
51018
 
51019
+ //是否超出边界了
51020
+ this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep)
51021
+ {
51022
+ if (!this.EnableMoveCheck) return false;
51023
+
51024
+ if (!this.Frame) return false;
51025
+
51026
+ if (this.Frame.ClassName=="MinuteFrame" || this.Frame.Class=="MinuteHScreenFrame")
51027
+ return false;
51028
+
51029
+
51030
+ var data=this.Frame.Data;
51031
+ if (!data) return false;
51032
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return false;
51033
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryPoint)) return false;
51034
+ var isHScreen=this.Frame.IsHScreen;
51035
+ if (isHScreen)
51036
+ {
51037
+ //TODO:横屏以后再做
51038
+ return false;
51039
+ }
51040
+ else
51041
+ {
51042
+ var offset=data.DataOffset;
51043
+ var startIndex=0-offset;
51044
+ var endIndex=data.Data.length-offset;
51045
+
51046
+ if (xStep>0)
51047
+ {
51048
+ var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
51049
+ for(var i=0;i<aryPoint.length;++i)
51050
+ {
51051
+ var item=aryPoint[i];
51052
+ if (item.X+xStep>xEnd) return true;
51053
+ }
51054
+ }
51055
+ else if (xStep<0)
51056
+ {
51057
+ var xStart=this.Frame.GetXFromIndex(startIndex,false);
51058
+ for(var i=0;i<aryPoint.length;++i)
51059
+ {
51060
+ var item=aryPoint[i];
51061
+ if (item.X+xStep<xStart) return true;
51062
+ }
51063
+ }
51064
+
51065
+ return false;
51066
+ }
51067
+ }
51068
+
51016
51069
  this.ClipFrame=function()
51017
51070
  {
51018
51071
  if (this.Frame.IsHScreen)
@@ -52145,6 +52198,7 @@ function ChartDrawGraffitiLine()
52145
52198
  this.IsPointIn=this.IsPointIn_XYValue_Line;
52146
52199
  this.GetXYCoordinate=null;
52147
52200
  this.PointCount=2; //画点的个数
52201
+ this.EnableMoveCheck=false; //允许移动时不监测是否超出边界
52148
52202
 
52149
52203
  this.PointToValue=function()
52150
52204
  {
@@ -53169,6 +53223,8 @@ function ChartDrawPictureRect()
53169
53223
 
53170
53224
  this.ClassName='ChartDrawPictureRect';
53171
53225
  this.GetXYCoordinate=this.GetXYCoordinate_default;
53226
+ this.OnlyMoveXIndex=true;
53227
+ this.IsSupportMagnet=true;
53172
53228
 
53173
53229
  this.Draw=function()
53174
53230
  {
@@ -75935,6 +75991,7 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
75935
75991
  var symbol=data.stock[0].symbol;
75936
75992
  var upperSymbol=symbol.toUpperCase();
75937
75993
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
75994
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //国内期货, 纽约期货交易所
75938
75995
  var minuteData={ Date:stock.date, Data:[] , Symbol:symbol, Name:stock.name };
75939
75996
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA; //扩展数据序号
75940
75997
  if (IFrameSplitOperator.IsNumber(stock.high)) minuteData.High=stock.high;
@@ -75942,13 +75999,15 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
75942
75999
  if (IFrameSplitOperator.IsNumber(stock.yclose)) minuteData.YClose=stock.yclose;
75943
76000
  if (IFrameSplitOperator.IsNumber(stock.YClearing)) minuteData.YClearing=stock.yclearing;
75944
76001
 
75945
- if (IFrameSplitOperator.IsNonEmptyArray(data.stock[0].minute))
76002
+ if (IFrameSplitOperator.IsNonEmptyArray(stock.minute))
75946
76003
  {
75947
76004
  for(var i=0;i<stock.minute.length;++i)
75948
76005
  {
75949
76006
  var jsData=stock.minute[i];
75950
76007
  var item=new MinuteData();
75951
76008
 
76009
+ item.YClearing=minuteData.YClearing;
76010
+ item.YClose=minuteData.YClose;
75952
76011
  item.Date=jsData[0];
75953
76012
  item.Time=jsData[1];
75954
76013
  item.Open=jsData[2];
@@ -75970,6 +76029,10 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
75970
76029
  if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
75971
76030
  item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
75972
76031
 
76032
+ if (isFutures && minuteData.YClearing && item.Close)
76033
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
76034
+
76035
+
75973
76036
  minuteData.Data.push(item);
75974
76037
  }
75975
76038
  }
@@ -54725,6 +54725,7 @@ function IChartDrawPicture()
54725
54725
  this.EnableCtrlMove=false; //是否按住Ctrl才能移动
54726
54726
  this.OnlyMoveXIndex=false; //只能在X轴刻度上移动
54727
54727
  this.IsSupportMagnet=false; //是否支持磁吸
54728
+ this.EnableMoveCheck=true; //允许移动时监测是否超出边界
54728
54729
 
54729
54730
  this.IsDrawFirst=false;
54730
54731
  this.IsShowYCoordinate=false; //是否在Y轴显示点的刻度
@@ -55073,6 +55074,8 @@ function IChartDrawPicture()
55073
55074
  var index=parseInt(this.MovePointIndex);
55074
55075
  if (index===100) //整体移动
55075
55076
  {
55077
+ if (this.IsMoveOutOfBounds(this.Point, xStep, yStep)) return false;
55078
+
55076
55079
  for(var i in this.Point)
55077
55080
  {
55078
55081
  this.Point[i].X+=xStep;
@@ -55093,6 +55096,56 @@ function IChartDrawPicture()
55093
55096
  }
55094
55097
  }
55095
55098
 
55099
+ //是否超出边界了
55100
+ this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep)
55101
+ {
55102
+ if (!this.EnableMoveCheck) return false;
55103
+
55104
+ if (!this.Frame) return false;
55105
+
55106
+ if (this.Frame.ClassName=="MinuteFrame" || this.Frame.Class=="MinuteHScreenFrame")
55107
+ return false;
55108
+
55109
+
55110
+ var data=this.Frame.Data;
55111
+ if (!data) return false;
55112
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return false;
55113
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryPoint)) return false;
55114
+ var isHScreen=this.Frame.IsHScreen;
55115
+ if (isHScreen)
55116
+ {
55117
+ //TODO:横屏以后再做
55118
+ return false;
55119
+ }
55120
+ else
55121
+ {
55122
+ var offset=data.DataOffset;
55123
+ var startIndex=0-offset;
55124
+ var endIndex=data.Data.length-offset;
55125
+
55126
+ if (xStep>0)
55127
+ {
55128
+ var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
55129
+ for(var i=0;i<aryPoint.length;++i)
55130
+ {
55131
+ var item=aryPoint[i];
55132
+ if (item.X+xStep>xEnd) return true;
55133
+ }
55134
+ }
55135
+ else if (xStep<0)
55136
+ {
55137
+ var xStart=this.Frame.GetXFromIndex(startIndex,false);
55138
+ for(var i=0;i<aryPoint.length;++i)
55139
+ {
55140
+ var item=aryPoint[i];
55141
+ if (item.X+xStep<xStart) return true;
55142
+ }
55143
+ }
55144
+
55145
+ return false;
55146
+ }
55147
+ }
55148
+
55096
55149
  this.ClipFrame=function()
55097
55150
  {
55098
55151
  if (this.Frame.IsHScreen)
@@ -56225,6 +56278,7 @@ function ChartDrawGraffitiLine()
56225
56278
  this.IsPointIn=this.IsPointIn_XYValue_Line;
56226
56279
  this.GetXYCoordinate=null;
56227
56280
  this.PointCount=2; //画点的个数
56281
+ this.EnableMoveCheck=false; //允许移动时不监测是否超出边界
56228
56282
 
56229
56283
  this.PointToValue=function()
56230
56284
  {
@@ -57249,6 +57303,8 @@ function ChartDrawPictureRect()
57249
57303
 
57250
57304
  this.ClassName='ChartDrawPictureRect';
57251
57305
  this.GetXYCoordinate=this.GetXYCoordinate_default;
57306
+ this.OnlyMoveXIndex=true;
57307
+ this.IsSupportMagnet=true;
57252
57308
 
57253
57309
  this.Draw=function()
57254
57310
  {
@@ -80015,6 +80071,7 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80015
80071
  var symbol=data.stock[0].symbol;
80016
80072
  var upperSymbol=symbol.toUpperCase();
80017
80073
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
80074
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //国内期货, 纽约期货交易所
80018
80075
  var minuteData={ Date:stock.date, Data:[] , Symbol:symbol, Name:stock.name };
80019
80076
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA; //扩展数据序号
80020
80077
  if (IFrameSplitOperator.IsNumber(stock.high)) minuteData.High=stock.high;
@@ -80022,13 +80079,15 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80022
80079
  if (IFrameSplitOperator.IsNumber(stock.yclose)) minuteData.YClose=stock.yclose;
80023
80080
  if (IFrameSplitOperator.IsNumber(stock.YClearing)) minuteData.YClearing=stock.yclearing;
80024
80081
 
80025
- if (IFrameSplitOperator.IsNonEmptyArray(data.stock[0].minute))
80082
+ if (IFrameSplitOperator.IsNonEmptyArray(stock.minute))
80026
80083
  {
80027
80084
  for(var i=0;i<stock.minute.length;++i)
80028
80085
  {
80029
80086
  var jsData=stock.minute[i];
80030
80087
  var item=new MinuteData();
80031
80088
 
80089
+ item.YClearing=minuteData.YClearing;
80090
+ item.YClose=minuteData.YClose;
80032
80091
  item.Date=jsData[0];
80033
80092
  item.Time=jsData[1];
80034
80093
  item.Open=jsData[2];
@@ -80050,6 +80109,10 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80050
80109
  if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
80051
80110
  item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
80052
80111
 
80112
+ if (isFutures && minuteData.YClearing && item.Close)
80113
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
80114
+
80115
+
80053
80116
  minuteData.Data.push(item);
80054
80117
  }
80055
80118
  }
@@ -128887,7 +128950,7 @@ function ScrollBarBGChart()
128887
128950
 
128888
128951
 
128889
128952
 
128890
- var HQCHART_VERSION="1.1.12521";
128953
+ var HQCHART_VERSION="1.1.12535";
128891
128954
 
128892
128955
  function PrintHQChartVersion()
128893
128956
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12521";
8
+ var HQCHART_VERSION="1.1.12535";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -54769,6 +54769,7 @@ function IChartDrawPicture()
54769
54769
  this.EnableCtrlMove=false; //是否按住Ctrl才能移动
54770
54770
  this.OnlyMoveXIndex=false; //只能在X轴刻度上移动
54771
54771
  this.IsSupportMagnet=false; //是否支持磁吸
54772
+ this.EnableMoveCheck=true; //允许移动时监测是否超出边界
54772
54773
 
54773
54774
  this.IsDrawFirst=false;
54774
54775
  this.IsShowYCoordinate=false; //是否在Y轴显示点的刻度
@@ -55117,6 +55118,8 @@ function IChartDrawPicture()
55117
55118
  var index=parseInt(this.MovePointIndex);
55118
55119
  if (index===100) //整体移动
55119
55120
  {
55121
+ if (this.IsMoveOutOfBounds(this.Point, xStep, yStep)) return false;
55122
+
55120
55123
  for(var i in this.Point)
55121
55124
  {
55122
55125
  this.Point[i].X+=xStep;
@@ -55137,6 +55140,56 @@ function IChartDrawPicture()
55137
55140
  }
55138
55141
  }
55139
55142
 
55143
+ //是否超出边界了
55144
+ this.IsMoveOutOfBounds=function(aryPoint,xStep,yStep)
55145
+ {
55146
+ if (!this.EnableMoveCheck) return false;
55147
+
55148
+ if (!this.Frame) return false;
55149
+
55150
+ if (this.Frame.ClassName=="MinuteFrame" || this.Frame.Class=="MinuteHScreenFrame")
55151
+ return false;
55152
+
55153
+
55154
+ var data=this.Frame.Data;
55155
+ if (!data) return false;
55156
+ if (!IFrameSplitOperator.IsNonEmptyArray(data.Data)) return false;
55157
+ if (!IFrameSplitOperator.IsNonEmptyArray(aryPoint)) return false;
55158
+ var isHScreen=this.Frame.IsHScreen;
55159
+ if (isHScreen)
55160
+ {
55161
+ //TODO:横屏以后再做
55162
+ return false;
55163
+ }
55164
+ else
55165
+ {
55166
+ var offset=data.DataOffset;
55167
+ var startIndex=0-offset;
55168
+ var endIndex=data.Data.length-offset;
55169
+
55170
+ if (xStep>0)
55171
+ {
55172
+ var xEnd=this.Frame.GetXFromIndex(endIndex-1,false);
55173
+ for(var i=0;i<aryPoint.length;++i)
55174
+ {
55175
+ var item=aryPoint[i];
55176
+ if (item.X+xStep>xEnd) return true;
55177
+ }
55178
+ }
55179
+ else if (xStep<0)
55180
+ {
55181
+ var xStart=this.Frame.GetXFromIndex(startIndex,false);
55182
+ for(var i=0;i<aryPoint.length;++i)
55183
+ {
55184
+ var item=aryPoint[i];
55185
+ if (item.X+xStep<xStart) return true;
55186
+ }
55187
+ }
55188
+
55189
+ return false;
55190
+ }
55191
+ }
55192
+
55140
55193
  this.ClipFrame=function()
55141
55194
  {
55142
55195
  if (this.Frame.IsHScreen)
@@ -56269,6 +56322,7 @@ function ChartDrawGraffitiLine()
56269
56322
  this.IsPointIn=this.IsPointIn_XYValue_Line;
56270
56323
  this.GetXYCoordinate=null;
56271
56324
  this.PointCount=2; //画点的个数
56325
+ this.EnableMoveCheck=false; //允许移动时不监测是否超出边界
56272
56326
 
56273
56327
  this.PointToValue=function()
56274
56328
  {
@@ -57293,6 +57347,8 @@ function ChartDrawPictureRect()
57293
57347
 
57294
57348
  this.ClassName='ChartDrawPictureRect';
57295
57349
  this.GetXYCoordinate=this.GetXYCoordinate_default;
57350
+ this.OnlyMoveXIndex=true;
57351
+ this.IsSupportMagnet=true;
57296
57352
 
57297
57353
  this.Draw=function()
57298
57354
  {
@@ -80059,6 +80115,7 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80059
80115
  var symbol=data.stock[0].symbol;
80060
80116
  var upperSymbol=symbol.toUpperCase();
80061
80117
  var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
80118
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //国内期货, 纽约期货交易所
80062
80119
  var minuteData={ Date:stock.date, Data:[] , Symbol:symbol, Name:stock.name };
80063
80120
  var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA; //扩展数据序号
80064
80121
  if (IFrameSplitOperator.IsNumber(stock.high)) minuteData.High=stock.high;
@@ -80066,13 +80123,15 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80066
80123
  if (IFrameSplitOperator.IsNumber(stock.yclose)) minuteData.YClose=stock.yclose;
80067
80124
  if (IFrameSplitOperator.IsNumber(stock.YClearing)) minuteData.YClearing=stock.yclearing;
80068
80125
 
80069
- if (IFrameSplitOperator.IsNonEmptyArray(data.stock[0].minute))
80126
+ if (IFrameSplitOperator.IsNonEmptyArray(stock.minute))
80070
80127
  {
80071
80128
  for(var i=0;i<stock.minute.length;++i)
80072
80129
  {
80073
80130
  var jsData=stock.minute[i];
80074
80131
  var item=new MinuteData();
80075
80132
 
80133
+ item.YClearing=minuteData.YClearing;
80134
+ item.YClose=minuteData.YClose;
80076
80135
  item.Date=jsData[0];
80077
80136
  item.Time=jsData[1];
80078
80137
  item.Open=jsData[2];
@@ -80094,6 +80153,10 @@ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
80094
80153
  if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
80095
80154
  item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
80096
80155
 
80156
+ if (isFutures && minuteData.YClearing && item.Close)
80157
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
80158
+
80159
+
80097
80160
  minuteData.Data.push(item);
80098
80161
  }
80099
80162
  }
@@ -129040,7 +129103,7 @@ function HQChartScriptWorker()
129040
129103
 
129041
129104
 
129042
129105
 
129043
- var HQCHART_VERSION="1.1.12521";
129106
+ var HQCHART_VERSION="1.1.12535";
129044
129107
 
129045
129108
  function PrintHQChartVersion()
129046
129109
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.12508";
8
+ var HQCHART_VERSION="1.1.12534";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -9134,6 +9134,12 @@ function MinuteChartContainer(uielement)
9134
9134
 
9135
9135
  this.RecvMinuteData = function (data)
9136
9136
  {
9137
+ if (data.data && data.data.dataType===1) //增量更新数据模式
9138
+ {
9139
+ this.RecvUpdateMinuteData(data.data);
9140
+ return;
9141
+ }
9142
+
9137
9143
  var aryMinuteData = MinuteChartContainer.JsonDataToMinuteData(data.data);
9138
9144
 
9139
9145
  if (this.DayCount > 1) //多日走势图
@@ -9205,6 +9211,134 @@ function MinuteChartContainer(uielement)
9205
9211
  this.AutoUpdate();
9206
9212
  }
9207
9213
 
9214
+ this.RecvUpdateMinuteData=function(data)
9215
+ {
9216
+ var minuteData=MinuteChartContainer.JsonDataToUpdateMinuteData(data);
9217
+
9218
+ if (this.DayCount > 1) //多日走势图
9219
+ {
9220
+ this.UpdateLatestMinuteDataV2(minuteData);
9221
+ this.UpdateHistoryMinuteUI();
9222
+ this.RecvMinuteDataEvent();
9223
+ this.RequestOverlayMinuteData(); //更新最新叠加数据
9224
+ this.BindAllOverlayIndexData(this.SourceData);
9225
+ if (typeof (this.UpdateUICallback) == 'function') this.UpdateUICallback('RecvMinuteData', this);
9226
+ this.AutoUpdate();
9227
+ return;
9228
+ }
9229
+
9230
+ this.UpdateLatestMinuteDataV2(minuteData);
9231
+ var sourceData=this.SourceData;
9232
+ var aryMinuteData=this.SourceData.Data;
9233
+ var upperSymbol = this.Symbol.toUpperCase();
9234
+ var isFutures = MARKET_SUFFIX_NAME.IsFutures(upperSymbol);
9235
+ if (data.stock[0].yclearing && isFutures) yClose = data.stock[0].yclearing; //期货使用前结算价
9236
+ this.CaclutateLimitPrice(yClose, data.stock[0].limitprice); //计算涨停价格
9237
+ var extendData = { High: data.stock[0].high, Low: data.stock[0].low };
9238
+ this.BindMainData(sourceData, yClose, extendData);
9239
+
9240
+ for (var i=0;i<this.Frame.SubFrame.length;++i) //把股票代码设置到X轴刻度类里
9241
+ {
9242
+ var item = this.Frame.SubFrame[i];
9243
+ item.Frame.XSplitOperator.Symbol = this.Symbol;
9244
+ item.Frame.XSplitOperator.DayCount = 1;
9245
+ item.Frame.XSplitOperator.Operator(); //调整X轴个数
9246
+ item.Frame.YSplitOperator.Symbol = this.Symbol;
9247
+ }
9248
+
9249
+ //计算指标
9250
+ if (this.Frame.SubFrame.length > 2)
9251
+ {
9252
+ var bindData = new ChartData();
9253
+ bindData.Data = aryMinuteData;
9254
+ for (var i = 2; i < this.Frame.SubFrame.length; ++i)
9255
+ {
9256
+ this.BindIndexData(i, bindData);
9257
+ }
9258
+ }
9259
+
9260
+ var chartInfo = this.GetChartMinuteInfo();
9261
+ if (chartInfo) chartInfo.SourceData = this.SourceData; //数据绑定到信息地雷上
9262
+ this.RecvMinuteDataEvent();
9263
+ this.RequestMinuteInfoData();
9264
+ this.RequestOverlayMinuteData();//请求叠加数据 (主数据下载完再下载)
9265
+
9266
+ this.UpdateFrameMaxMin(); //调整坐标最大 最小值
9267
+ this.Frame.SetSizeChage(true);
9268
+ this.Draw();
9269
+
9270
+ this.BindAllOverlayIndexData(this.SourceData);
9271
+
9272
+ if (typeof (this.UpdateUICallback) == 'function') this.UpdateUICallback('RecvMinuteData', this);
9273
+
9274
+ this.AutoUpdate();
9275
+ }
9276
+
9277
+ //更新最新的几条数据
9278
+ this.UpdateLatestMinuteDataV2=function(minuteData)
9279
+ {
9280
+ if (this.DayCount>1)
9281
+ {
9282
+ if (!this.DayData) return;
9283
+
9284
+ var findItem=null;
9285
+ for(var i=0; i<this.DayData.length; ++i)
9286
+ {
9287
+ var item=this.DayData[i];
9288
+ if (item.Date===date)
9289
+ {
9290
+ findItem=item;
9291
+ break;
9292
+ }
9293
+ }
9294
+
9295
+ if (!findItem) return;
9296
+
9297
+ var findIndex=-1;
9298
+ var firstItem=minuteData.Data[0];
9299
+ for(var i=0;i<findItem.Data.length;++i)
9300
+ {
9301
+ var item=findItem.Data[i];
9302
+
9303
+ if (item.Date==firstItem.Date && item.Time==firstItem.Time)
9304
+ {
9305
+ findIndex=i;
9306
+ break;
9307
+ }
9308
+ }
9309
+
9310
+ if (findIndex<0) findIndex=findItem.Data.length;
9311
+ for(var i=0, j=findIndex; i<minuteData.Data.length; ++i, ++j)
9312
+ {
9313
+ var item=minuteData.Data[i];
9314
+ findItem.Data[j]=item;
9315
+ }
9316
+ }
9317
+ else
9318
+ {
9319
+ if (!this.SourceData) return;
9320
+ var findIndex=-1;
9321
+ var firstItem=minuteData.Data[0];
9322
+ for(var i=0;i<this.SourceData.Data.length;++i)
9323
+ {
9324
+ var item=this.SourceData.Data[i];
9325
+ if (item.Date==firstItem.Date && item.Time==firstItem.Time)
9326
+ {
9327
+ findIndex=i;
9328
+ break;
9329
+ }
9330
+ }
9331
+
9332
+ if (findIndex<0) findIndex=this.SourceData.Data.length;
9333
+ for(var i=0, j=findIndex; i<minuteData.Data.length; ++i, ++j)
9334
+ {
9335
+ var item=minuteData.Data[i];
9336
+ this.SourceData.Data[j]=item;
9337
+ }
9338
+ }
9339
+
9340
+ }
9341
+
9208
9342
  //请求叠加数据 (主数据下载完再下载))
9209
9343
  this.RequestOverlayMinuteData = function ()
9210
9344
  {
@@ -9938,6 +10072,67 @@ MinuteChartContainer.JsonDataToMinuteDataArray = function (data)
9938
10072
  return result;
9939
10073
  }
9940
10074
 
10075
+ //分钟增量数据 stock: [ { date:, yclose:, yclearing: , minute:[ [],]} 0=日期 1=时间 2=开 3=高 4=低 5=收 6=均价 7=量 8=金额 9=涨幅 10=涨跌 11=领先指标 ]
10076
+ MinuteChartContainer.JsonDataToUpdateMinuteData=function(data)
10077
+ {
10078
+ if (!data || !data.stock) return null;
10079
+ var stock=data.stock[0];
10080
+ if (!IFrameSplitOperator.IsNumber(stock.date)) return null;
10081
+
10082
+ var symbol=data.stock[0].symbol;
10083
+ var upperSymbol=symbol.toUpperCase();
10084
+ var isSHSZ=MARKET_SUFFIX_NAME.IsSHSZ(upperSymbol);
10085
+ var isFutures=MARKET_SUFFIX_NAME.IsFutures(upperSymbol); //国内期货, 纽约期货交易所
10086
+ var minuteData={ Date:stock.date, Data:[] , Symbol:symbol, Name:stock.name };
10087
+ var extendDataIndex=JSCHART_DATA_FIELD_ID.MINUTE_DAY_EXTENDDATA; //扩展数据序号
10088
+ if (IFrameSplitOperator.IsNumber(stock.high)) minuteData.High=stock.high;
10089
+ if (IFrameSplitOperator.IsNumber(stock.low)) minuteData.Low=stock.low;
10090
+ if (IFrameSplitOperator.IsNumber(stock.yclose)) minuteData.YClose=stock.yclose;
10091
+ if (IFrameSplitOperator.IsNumber(stock.YClearing)) minuteData.YClearing=stock.yclearing;
10092
+
10093
+ if (IFrameSplitOperator.IsNumber(stock.high)) minuteData.High=stock.high;
10094
+ if (IFrameSplitOperator.IsNumber(stock.low)) minuteData.Low=stock.low;
10095
+ if (IFrameSplitOperator.IsNumber(stock.yclose)) minuteData.YClose=stock.yclose;
10096
+ if (IFrameSplitOperator.IsNumber(stock.YClearing)) minuteData.YClearing=stock.yclearing;
10097
+
10098
+ if (!IFrameSplitOperator.IsNonEmptyArray(stock.minute)) return minuteData;
10099
+
10100
+ for(var i=0;i<stock.minute.length;++i)
10101
+ {
10102
+ var jsData=stock.minute[i];
10103
+ var item=new MinuteData();
10104
+
10105
+ item.YClearing=minuteData.YClearing;
10106
+ item.YClose=minuteData.YClose;
10107
+ item.Date=jsData[0];
10108
+ item.Time=jsData[1];
10109
+ item.Open=jsData[2];
10110
+ item.High=jsData[3];
10111
+ item.Low=jsData[4];
10112
+ item.Close=jsData[5];
10113
+ item.AvPrice=jsData[6];
10114
+ item.Vol=jsData[7];
10115
+ item.Amount=jsData[8];
10116
+ if (IFrameSplitOperator.IsNumber(jsData[9])) item.Increase=jsData[9];
10117
+ if (IFrameSplitOperator.IsNumber(jsData[10])) item.Risefall=jsData[10];
10118
+ if (IFrameSplitOperator.IsNumber(jsData[11])) item.Lead=jsData[11];
10119
+
10120
+ if (jsData[extendDataIndex]) item.ExtendData=jsData[extendDataIndex];
10121
+ item.DateTime=item.Date.toString()+" "+item.Time.toString();
10122
+ if (isSHSZ) item.Vol=item.Vol/100; //沪深股票原始单位股
10123
+
10124
+ if (IFrameSplitOperator.IsNumber(minuteData.YClose) && item.Close)
10125
+ item.Increase=(item.Close-minuteData.YClose)/minuteData.YClose*100; //涨幅 (最新价格-昨收)/昨收*100;
10126
+
10127
+ if (isFutures && minuteData.YClearing && item.Close)
10128
+ item.Increase=(item.Close-minuteData.YClearing)/minuteData.YClearing*100; //涨幅 (最新价格-昨结算价)/昨结算价*100;
10129
+
10130
+ minuteData.Data.push(item);
10131
+ }
10132
+
10133
+ return minuteData;
10134
+ }
10135
+
9941
10136
  /*
9942
10137
  历史分钟走势图
9943
10138
  */