hqchart 1.1.15039 → 1.1.15043
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/lib/umychart.vue.js
CHANGED
|
@@ -1190,7 +1190,7 @@ if(option.KLine.MaxRequestDataCount>0)chart.MaxRequestDataCount=option.KLine.Max
|
|
|
1190
1190
|
if(option.KLine.RightSpaceCount>0)chart.RightSpaceCount=option.KLine.RightSpaceCount;if(option.KLine.ZoomType>0)chart.ZoomType=option.KLine.ZoomType;if(option.KLine.DataWidth>=1)chart.KLineSize={DataWidth:option.KLine.DataWidth};if(IFrameSplitOperator.IsNumber(option.KLine.RightFormula))chart.RightFormula=option.KLine.RightFormula;}//自定义显示位置
|
|
1191
1191
|
if(option.CustomShow&&IFrameSplitOperator.IsPlusNumber(option.CustomShow.Date)){var item=option.CustomShow;chart.CustomShow={Date:item.Date};if(IFrameSplitOperator.IsNumber(item.Time))chart.CustomShow.Time=item.Time;if(IFrameSplitOperator.IsPlusNumber(item.PageSize))chart.CustomShow.PageSize=item.PageSize;}if(option.EnableFlowCapital){var item=option.EnableFlowCapital;if(item.BIT==true)chart.EnableFlowCapital.BIT=item.BIT;}if(IFrameSplitOperator.IsBool(option.EnableBorderDrag)){chart.EnableBorderDrag=option.EnableBorderDrag;}if(option.Page){if(option.Page.Day&&option.Page.Day.Enable==true)chart.Page.Day.Enable=true;if(option.Page.Minute&&option.Page.Minute.Enable==true)chart.Page.Minute.Enable=true;}if(option.DragDownload){if(option.DragDownload.Day&&option.DragDownload.Day.Enable==true)chart.DragDownload.Day.Enable=true;if(option.DragDownload.Minute&&option.DragDownload.Minute.Enable==true)chart.DragDownload.Minute.Enable=true;}if(option.ZoomDownload){if(option.ZoomDownload.Day&&IFrameSplitOperator.IsBool(option.ZoomDownload.Day.Enable))chart.ZoomDownload.Day.Enable=option.ZoomDownload.Day.Enable;if(option.ZoomDownload.Minute&&IFrameSplitOperator.IsBool(option.ZoomDownload.Minute.Enable))chart.ZoomDownload.Minute.Enable=option.ZoomDownload.Minute.Enable;}if(option.Language){var value=g_JSChartLocalization.GetLanguageID(option.Language);if(IFrameSplitOperator.IsNumber(value))chart.LanguageID=value;}if(option.SourceDatatLimit)chart.SetSourceDatatLimit(option.SourceDatatLimit);if(option.DrawPicture)//画图工具
|
|
1192
1192
|
{if(option.DrawPicture.StorageKey&&chart.ChartDrawStorage)chart.ChartDrawStorage.Load(option.DrawPicture.StorageKey);}if(option.DrawTool)//画图工具
|
|
1193
|
-
{
|
|
1193
|
+
{var item=option.DrawTool;if(chart.ChartDrawStorage){if(item.StorageKey)chart.ChartDrawStorage.Load(item.StorageKey);if(IFrameSplitOperator.IsBool(item.EnableCrossPeriod))chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;}}if(option.KeyboardMove){var item=option.KeyboardMove;if(IFrameSplitOperator.IsPlusNumber(item.Delay))chart.KeyboardMove.Delay=item.Delay;if(IFrameSplitOperator.IsPlusNumber(item.PressTime))chart.KeyboardMove.PressTime=item.PressTime;}if(IFrameSplitOperator.IsNumber(option.StepPixel))chart.StepPixel=option.StepPixel;if(option.ZoomStepPixel>0)chart.ZoomStepPixel=option.ZoomStepPixel;if(option.IsApiPeriod==true)chart.IsApiPeriod=option.IsApiPeriod;//图形选中
|
|
1194
1194
|
if(option.SelectedChart){var item=option.SelectedChart;if(IFrameSplitOperator.IsBool(item.EnableSelected))chart.SelectedChart.EnableSelected=item.EnableSelected;if(IFrameSplitOperator.IsBool(item.EnableMoveOn))chart.SelectedChart.EnableMoveOn=item.EnableMoveOn;}if(option.PressKeyboardConfig)this.SetPressKeyboardConfig(chart,option.PressKeyboardConfig);if(!option.Windows||option.Windows.length<=0)return null;//K线扩展计算方法配置
|
|
1195
1195
|
if(IFrameSplitOperator.IsNonEmptyArray(option.KLineCalcOption)){for(var i=0;i<option.KLineCalcOption.length;++i){var item=option.KLineCalcOption[i];if(!item.ClassName||!item.Option)continue;chart.SetKLineCalcOption(item.ClassName,item.Option);}}if(option.FastSlide){var item=option.FastSlide;if(IFrameSplitOperator.IsNumber(item.MinDistance))chart.FastSlideConfig.MinDistance=item.MinDistance;if(IFrameSplitOperator.IsNumber(item.MinSpeed))chart.FastSlideConfig.MinSpeed=item.MinSpeed;if(IFrameSplitOperator.IsNumber(item.MaxTime))chart.FastSlideConfig.MaxTime=item.MaxTime;if(IFrameSplitOperator.IsBool(item.Enable))chart.FastSlideConfig.Enable=item.Enable;}if(chart.ClassName=="KLineChartContainer"){if(!option.DragSelectRect){option.DragSelectRect={Enable:true};//默认开启区间选中画布
|
|
1196
1196
|
}if(option.DragSelectRect){var zindex=10;var item=option.DragSelectRect;if(IFrameSplitOperator.IsNumber(item.ZIndex))zindex=item.ZIndex;if(item.Enable)this.CreateExtraCanvasElement(JSChart.RectDragCanvasKey,{ZIndex:zindex});//创建独立的区间选择画布
|
|
@@ -6455,8 +6455,9 @@ this.PointMagnetKLine=function(){if(!this.IsSupportMagnet)return false;if(!this.
|
|
|
6455
6455
|
this.PointToValue=function(){if(!this.Frame)return false;if(this.Frame.ClassName=="MinuteFrame"||this.Frame.Class=="MinuteHScreenFrame"){return this.PointToValue_Minute();}else{return this.PointToValue_KLine();}};this.PointToKLine=function(aryPoint){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;var kLine=[];var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i in aryPoint){var item=aryPoint[i];var xValue=parseInt(this.Frame.GetXData(item.Y))+data.DataOffset;var yValue=this.Frame.GetYData(item.X);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}else{for(var i in aryPoint){var item=aryPoint[i];var index=parseInt(this.Frame.GetXData(item.X,false));var xValue=index+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length){xValue=data.Data.length-1;index=xValue-data.DataOffset;}var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue,XIndex:index};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;kLine[i]=valueItem;}}return kLine;};this.PointToValue_KLine=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false))+data.DataOffset;var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}else{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false))+data.DataOffset;if(xValue<0)xValue=0;else if(xValue>=data.Data.length)xValue=data.Data.length-1;var yValue=this.Frame.GetYData(item.Y,false);var valueItem={XValue:xValue,YValue:yValue};var kline=data.Data[xValue];valueItem.DateTime={Date:kline.Date};if(IFrameSplitOperator.IsNumber(kline.Time))valueItem.DateTime.Time=kline.Time;this.Value[i]=valueItem;}}return true;};this.PointToValue_Minute=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;var isHScreen=this.Frame.IsHScreen;if(isHScreen){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.Y,false));var yValue=this.Frame.GetYData(item.X,false);var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}else{var xDatetime=g_MinuteTimeStringData.GetTimeData(this.Symbol);for(var i=0;i<this.Point.length;++i){var item=this.Point[i];var xValue=parseInt(this.Frame.GetXData(item.X,false));var yValue=this.Frame.GetYData(item.Y,false);if(xValue>=data.Data.length)//超过当前数据,直接读固定时间
|
|
6456
6456
|
{var index=xValue%xDatetime.length;var dataIndex=data.Data.length-1;var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[dataIndex];var timeItem=xDatetime[index];valueItem.DateTime={Date:minuteItem.Date,Time:timeItem};this.Value[i]=valueItem;}else{var valueItem={XValue:xValue,YValue:yValue};var minuteItem=data.Data[xValue];valueItem.DateTime={Date:minuteItem.Date,Time:minuteItem.Time};this.Value[i]=valueItem;}}}return true;};this.IsPointIn=function(x,y,option){return false;};//Value => Point
|
|
6457
6457
|
this.ValueToPoint=function(){if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;//this.UpdateXValue();
|
|
6458
|
-
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.
|
|
6459
|
-
|
|
6458
|
+
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.GetkData=function(){if(!this.Frame)return null;var data=this.Frame.Data;if(!data)return null;return data;};//周期变动 X重新定位
|
|
6459
|
+
this.ChangePeriod=function(period){var kData=this.GetkData();if(!kData)return;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,Time:0,Match:null};if(IFrameSplitOperator.IsNumber(item.DateTime.Time))dateTime.Time=item.DateTime.Time;aryDateTime[i]=dateTime;}var findCount=0;var perData=null;var perIndex=-1;for(var i=0,j=0;i<kData.Data.length;++i){var kItem=kData.Data[i];for(j=0;j<aryDateTime.length;++j){var item=aryDateTime[j];if(item.Match)continue;if(ChartData.IsDayPeriod(period,true)){if(kItem.Date>item.Date){item.Match={KItem:perData,Index:perIndex};++findCount;}}else if(ChartData.IsMinutePeriod(period,true)){if(kItem.Date>item.Date||kItem.Date==item.Date&&kItem.Time>item.Time){item.Match={KItem:perData,Index:perIndex};++findCount;}}}perData=kItem;perIndex=i;if(findCount>=aryDateTime.length)break;}for(var i=0;i<aryDateTime.length;++i){var item=aryDateTime[i];var valueItem=this.Value[i];if(item.Match&&item.Match.KItem){valueItem.DateTime={Date:item.Match.Date,Time:item.Match.Time};valueItem.XValue=item.Match.Index;}else{valueItem.DateTime=null;valueItem.XValue=null;}}this.Period=period;};this.UpdateXValue=function()//通过datetime更新x的索引
|
|
6460
|
+
{var data=this.GetkData();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=0;i<aryDateTime.length;++i){var findItem=aryDateTime[i];var valueItem=this.Value[i];if(findItem.Index>=0)valueItem.XValue=findItem.Index;}};//重置X索引数据
|
|
6460
6461
|
this.ResetXValue=function(){for(var i=0;i<this.Value.length;++i){var item=this.Value[i];item.XValue=null;}return true;};//xStep,yStep 移动的偏移量
|
|
6461
6462
|
this.Move=function(xStep,yStep){if(this.Status!=20)return false;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)//整体移动
|
|
6462
6463
|
{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;}};//是否超出边界了
|
|
@@ -7147,17 +7148,20 @@ var aryLabel=this.FormatLabelText(drawPoint);if(!IFrameSplitOperator.IsNonEmptyA
|
|
|
7147
7148
|
{rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptCenter.Y-rtText.Height/2;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==1)//顶部
|
|
7148
7149
|
{rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptTop.Y-rtText.Height;rtText.Bottom=rtText.Top+rtText.Height;}else if(lableItem.Type==2){rtText.Left=ptCenter.X+clientWidth/2-rtText.Width/2;rtText.Right=rtText.Left+rtText.Width;rtText.Top=ptBottom.Y;rtText.Bottom=rtText.Top+rtText.Height;}else{return;}this.Canvas.fillStyle=lableItem.BGColor;this.Canvas.fillRect(rtText.Left,rtText.Top,rtText.Width,rtText.Height);this.Canvas.textAlign='left';this.Canvas.textBaseline='bottom';this.Canvas.fillStyle=lableItem.TextColor;var x=rtText.Left+margin.Left;var y=rtText.Top+margin.Top+this.TextFontHeight;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var xText=x;var yText=y;if(IFrameSplitOperator.IsNumber(item.YOffset))yText+=item.YOffset;this.Canvas.fillText(item.Text,xText,yText);y+=this.TextFontHeight;}};this.FormatLabelText=function(drawPoint){if(this.HQChart){var event=this.HQChart.GetEventCallback(JSCHART_EVENT_ID.ON_FORMAT_TVLONGPOSITION_LABEL);if(event&&event.Callback){var sendData={Frame:this.Frame,AryLabel:null,AryPoint:drawPoint,PreventDefault:false};event.Callback(event,sendData,this);if(sendData.PreventDefault)return sendData.AryLabel;}}var ptCenter=drawPoint[0];var ptTop=drawPoint[2];var ptBottom=drawPoint[3];var aryData=[];var yValue=this.Frame.GetYData(ptCenter.Y,false);aryData.push({Type:0,AryText:[{Text:'Open: '+yValue.toFixed(2)}],BGColor:"rgb(112,128,144)",TextColor:"rgb(255,255,255)"});var yValue=this.Frame.GetYData(ptTop.Y,false);aryData.push({Type:1,AryText:[{Text:'Target: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.TopAreaConfig.TextBGColor,TextColor:this.TopAreaConfig.TextColor});var yValue=this.Frame.GetYData(ptBottom.Y,false);aryData.push({Type:2,AryText:[{Text:'Stop: '+yValue.toFixed(2),YOffset:-1}],BGColor:this.BottomAreaConfig.TextBGColor,TextColor:this.BottomAreaConfig.TextColor});return aryData;};this.CalculateLabelSize=function(lableItem){lableItem.Width=0;lableItem.Height=0;for(var i=0;i<lableItem.AryText.length;++i){var item=lableItem.AryText[i];var textWidth=this.Canvas.measureText(item.Text).width;item.TextWidth=textWidth;if(lableItem.Width<textWidth)lableItem.Width=textWidth;lableItem.Height+=this.TextFontHeight;}};this.Move=function(xStep,yStep){if(this.Status!=20)return false;if(!this.Frame)return false;var data=this.Frame.Data;if(!data)return false;if(this.MovePointIndex==100)//整体移动
|
|
7149
7150
|
{for(var i=0;i<this.Point.length;++i){var item=this.Point[i];item.X+=xStep;item.Y+=yStep;}}else if(this.MovePointIndex===0){for(var i=0;i<this.Point.length;++i){var item=this.Point[i];if(i==0){item.X+=xStep;item.Y+=yStep;}else if(i==1){item.Y+=yStep;}else if(i==2||i==3){item.X+=xStep;}}}else if(this.MovePointIndex==1){this.Point[1].X+=xStep;}else if(this.MovePointIndex==2){var ptCenter=this.Point[0];var item=this.Point[2];if(item.Y+yStep<ptCenter.Y)item.Y+=yStep;}else if(this.MovePointIndex==3){var ptCenter=this.Point[0];var item=this.Point[3];if(item.Y+yStep>ptCenter.Y)item.Y+=yStep;}};}function ChartDrawTVShortPosition(){this.newMethod=ChartDrawTVLongPosition;//派生
|
|
7150
|
-
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawTVShortPosition';this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);}function ChartDrawStorage(){this.DrawData=new
|
|
7151
|
+
this.newMethod();delete this.newMethod;this.ClassName='ChartDrawTVShortPosition';this.TopAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.BottomArea);this.BottomAreaConfig=CloneData(g_JSChartResource.ChartDrawTVLongPosition.TopArea);}function ChartDrawStorage(){//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
7152
|
+
this.DrawDataV2=new _map2.default();//画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
7151
7153
|
this.StorageKey;this.GetEventCallback;//事件回调
|
|
7154
|
+
this.EnableCrossPeriod=false;//跨周期
|
|
7152
7155
|
this.Load=function(key)//从本地读取画图工具
|
|
7153
|
-
{if(!key)return;this.StorageKey=key;var cacheValue=localStorage[this.StorageKey];JSConsole.Chart.Log('[ChartDrawStorage::Load] Load to localStorage, key='+this.StorageKey+', cache='+cacheValue);if(!cacheValue)return;if(typeof cacheValue!="string")return;var saveData=JSON.parse(cacheValue);
|
|
7154
|
-
{
|
|
7155
|
-
|
|
7156
|
-
{var
|
|
7157
|
-
{
|
|
7158
|
-
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData]
|
|
7159
|
-
{
|
|
7160
|
-
{var
|
|
7156
|
+
{if(!key)return;this.StorageKey=key;var cacheValue=localStorage[this.StorageKey];JSConsole.Chart.Log('[ChartDrawStorage::Load] Load to localStorage, key='+this.StorageKey+', cache='+cacheValue);if(!cacheValue)return;if(typeof cacheValue!="string")return;var saveData=JSON.parse(cacheValue);if(!saveData)return;if(IFrameSplitOperator.IsNonEmptyArray(saveData))//老版本 key=symbol-Period
|
|
7157
|
+
{for(var i=0;i<saveData.length;++i){var item=saveData[i];for(var j=0;j<item.Value.length;++j){var drawItem=item.Value[j];var symbol=drawItem.Value.Symbol;if(!this.DrawDataV2.has(symbol))this.DrawDataV2.set(symbol,{Symbol:symbol,MapPicture:new _map2.default()});var stockItem=this.DrawDataV2.get(symbol);stockItem.MapPicture.set(drawItem.Value.Guid,drawItem.Value);}}}else if(saveData.Ver==2.0&&IFrameSplitOperator.IsNonEmptyArray(saveData.Data)){for(var i=0;i<saveData.Data.length;++i){var item=saveData.Data[i];//{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
|
|
7158
|
+
var stockItem={Symbol:item.Symbol,MapPicture:new _map2.default()};for(var j=0;j<item.AryPicture.length;++j){var drawItem=item.AryPicture[j];stockItem.MapPicture.set(drawItem.Guid,drawItem);}this.DrawDataV2.set(stockItem.Symbol,stockItem);}}};this.Save=function()//把数据保存到本地
|
|
7159
|
+
{if(!this.StorageKey)return;var saveData=[];var _iteratorNormalCompletion14=true;var _didIteratorError14=false;var _iteratorError14=undefined;try{for(var _iterator14=(0,_getIterator3.default)(this.DrawDataV2),_step14;!(_iteratorNormalCompletion14=(_step14=_iterator14.next()).done);_iteratorNormalCompletion14=true){var mapItem=_step14.value;var symbol=mapItem[0];var stockItem=mapItem[1];var itemData={Symbol:symbol,AryPicture:[]};var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=(0,_getIterator3.default)(stockItem.MapPicture),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var pictureItem=_step15.value;var drawItem=pictureItem[1];if(drawItem.EnableSave===false)continue;itemData.AryPicture.push(drawItem);}}catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15.return){_iterator15.return();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}if(IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))saveData.push(itemData);}}catch(err){_didIteratorError14=true;_iteratorError14=err;}finally{try{if(!_iteratorNormalCompletion14&&_iterator14.return){_iterator14.return();}}finally{if(_didIteratorError14){throw _iteratorError14;}}}JSConsole.Chart.Log('[ChartDrawStorage::Save] save to localStorage, key='+this.StorageKey);var strData=(0,_stringify2.default)({Ver:2.0,Data:saveData});localStorage[this.StorageKey]=strData;};this.SaveDrawData=function(drawPicture)//保存一个画图工具
|
|
7160
|
+
{var symbol=drawPicture.Symbol;var data=drawPicture.ExportStorageData();if(!data)return;if(this.DrawDataV2.has(symbol))//更新
|
|
7161
|
+
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data',symbol,drawPicture,data);var stockItem=this.DrawDataV2.get(symbol);stockItem.MapPicture.set(data.Guid,data);}else//新增
|
|
7162
|
+
{JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data',symbol,drawPicture,data);var stockItem={Symbol:symbol,MapPicture:new _map2.default()};stockItem.set(data.Guid,data);this.DrawDataV2.set(symbol,newData);}JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ',this.DrawDataV2);this.Save();};this.DeleteDrawData=function(drawPicture)//删除一个画图工具
|
|
7163
|
+
{var symbol=drawPicture.Symbol;if(!this.DrawDataV2.has(symbol))return;var stockItem=this.DrawDataV2.get(symbol);if(!stockItem.MapPicture.has(drawPicture.Guid))return;stockItem.MapPicture.delete(drawPicture.Guid);this.Save();};this.Clear=function(){this.DrawDataV2=new _map2.default();this.Save();};this.GetDrawData=function(obj)//获取已有的画图工具数据{ Symbol: , Period:, }
|
|
7164
|
+
{var aryData=[];var symbol=obj.Symbol;if(!this.DrawDataV2.has(symbol))return aryData;var stockItem=this.DrawDataV2.get(symbol);var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(0,_getIterator3.default)(stockItem.MapPicture),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var mapItem=_step16.value;var drawItem=mapItem[1];if(this.EnableCrossPeriod){aryData.push(drawItem);}else{if(drawItem.Period==obj.Period)aryData.push(drawItem);}}}catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16.return){_iterator16.return();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}return aryData;};}/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
7161
7165
|
// 数据分割
|
|
7162
7166
|
// [0]=Start起始 [1]=End结束 [2]=FixInterval修正的间隔 [3]=Increase
|
|
7163
7167
|
//
|
|
@@ -8471,7 +8475,7 @@ if(!MARKET_SUFFIX_NAME.IsSHSZIndex(this.Symbol)&&!MARKET_SUFFIX_NAME.IsBIT(this.
|
|
|
8471
8475
|
for(var i=0;i<aryMenu.length;++i){var item=aryMenu[i];if(item.Name=="五彩K线"){if(this.ColorIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除五彩K线",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_COLOR_INDEX_ID}});}}else if(item.Name=="专家系统"){if(this.TradeIndex){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除专家系统",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_TRADE_INDEX_ID}});}}else if(item.Name=="叠加品种"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"取消叠加",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_OVERLAY_SYMBOL_ID}});break;}}}else if(item.Name=="信息地雷"){for(var j=0;j<item.SubMenu.length;++j){if(item.SubMenu[j].Checked){item.SubMenu.push({Name:JSPopMenu.SEPARATOR_LINE_NAME});item.SubMenu.push({Name:"删除所有",Data:{ID:JSCHART_MENU_ID.CMD_DELETE_ALL_KLINE_INFO_ID}});break;}}}else if(item.Name=="十字光标"){if(kItem){var bLocked=this.IsLockCorssCursor();if(bLocked)item.SubMenu.push({Name:"锁十字光标",Data:{ID:JSCHART_MENU_ID.CMD_UNLOCK_CROSSCURSOR},Checked:bLocked});else item.SubMenu.push({Name:"锁十字光标",Data:{ID:JSCHART_MENU_ID.CMD_LOCK_CROSSCURSOR,Args:[{KItem:{Date:kItem.Date,Time:kItem.Time},Draw:true}]},Checked:bLocked});}}}return aryMenu;};this.PopupSelectRectMenuV2=function(data,e){var _this32=this;var aryMenu=[{Name:"区间统计",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_SUMMARY_ID,Args:[e,data.SelectData]}},{Name:"区间放大",Data:{ID:JSCHART_MENU_ID.CMD_SELECTED_ZOOM_ID,Args:[data.SelectData]}}];var menuData={Menu:aryMenu,Position:JSPopMenu.POSITION_ID.RIGHT_MENU_ID};menuData.ClickCallback=function(data){_this32.OnClickRightMenu(data);};var x=data.X,y=data.Y;this.PopupMenuByRClick(menuData,x,y);};//重新加载画图工具(切换股票|周期)
|
|
8472
8476
|
this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:this.Period});var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_LOAD_DRAWPICTURE);if(event&&event.Callback){var sendData={Symbol:this.Symbol,Period:this.Period,DrawStorage:this.ChartDrawStorage,ChartDrawStorageCache:this.ChartDrawStorageCache};event.Callback(event,sendData,this);}}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
8473
8477
|
{if(!IFrameSplitOperator.IsNonEmptyArray(this.ChartDrawStorageCache))return;for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
|
|
8474
|
-
drawPicture.Option=this.ChartDrawOption;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.UpdateXValue();drawPicture.ValueToPoint();var self=this;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
8478
|
+
drawPicture.Option=this.ChartDrawOption;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);if(drawPicture.Period!=this.Period){drawPicture.ChangePeriod(this.Period);}else{drawPicture.UpdateXValue();}drawPicture.ValueToPoint();var self=this;drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
8475
8479
|
};//更新信息地雷
|
|
8476
8480
|
this.UpdataChartInfo=function(){//TODO: 根据K线数据日期来做map, 不在K线上的合并到下一个k线日期里面
|
|
8477
8481
|
var mapInfoData=null;if(this.Period==0)//日线数据 根据日期
|
|
@@ -9349,7 +9353,7 @@ if(option)drawPicture.SetOption(option);var self=this;drawPicture.Update=functio
|
|
|
9349
9353
|
{self.DrawDynamicInfo();};drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.CurrentChartDrawPicture=drawPicture;JSConsole.Chart.Log("[MinuteChartContainer::CreateChartDrawPicture] ",name,this.CurrentChartDrawPicture);return true;};//手动添加画线
|
|
9350
9354
|
this.AddChartDrawPicture=function(obj){if(!obj)return null;if(obj.FrameID<0||obj.FrameID>=this.Frame.SubFrame.length)return null;var self=this;var item=IChartDrawPicture.GetDrawPictureByClassName(obj.ClassName);if(!item)return null;var drawPicture=item.Create();drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[obj.FrameID].Frame;//绑定框架坐标
|
|
9351
9355
|
drawPicture.Symbol=this.Symbol;drawPicture.Period=888888888;if(obj.Value)drawPicture.Value=obj.Value;if(obj.Guid)drawPicture.Guid=obj.Guid;if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(obj);drawPicture.SetOption(obj);if(obj.EnableUpdateXValue)drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return self.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);if(obj.Draw==true)this.DrawDynamicInfo();return drawPicture;};this.ReloadChartDrawPicture=function(){this.ChartDrawPicture=[];if(this.SelectChartDrawPicture)this.SelectChartDrawPicture.IsSelected=false;this.SelectChartDrawPicture=null;this.CurrentChartDrawPicture=null;this.MoveOnChartDrawPicture=null;if(this.ChartDrawStorage){this.ChartDrawStorageCache=this.ChartDrawStorage.GetDrawData({Symbol:this.Symbol,Period:888888888});}};this.CreateChartDrawPictureByStorage=function()//把缓存(this.ChartDrawStorageCache) 画图工具创建出来
|
|
9352
|
-
{var _this43=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var
|
|
9356
|
+
{var _this43=this;if(!this.ChartDrawStorageCache||this.ChartDrawStorageCache.length<=0)return;var kData=this.GetKData();for(var i=0;i<this.ChartDrawStorageCache.length;++i){var item=this.ChartDrawStorageCache[i];if(item.FrameID<0||!this.Frame.SubFrame||this.Frame.SubFrame.length<item.FrameID)continue;var drawPicture=IChartDrawPicture.CreateChartDrawPicture(item);if(!drawPicture)continue;drawPicture.Canvas=this.Canvas;drawPicture.Status=10;drawPicture.Frame=this.Frame.SubFrame[item.FrameID].Frame;//绑定框架坐标
|
|
9353
9357
|
if(drawPicture.ImportStorageData)drawPicture.ImportStorageData(item);drawPicture.ResetXValue();drawPicture.UpdateXValue();drawPicture.ValueToPoint();drawPicture.GetActiveDrawPicture=function(){return _this43.GetActiveDrawPicture();};this.ChartDrawPicture.push(drawPicture);}this.ChartDrawStorageCache=null;//清空缓存
|
|
9354
9358
|
};this.SetSizeChange=function(bChanged){this.Frame.SetSizeChage(bChanged);for(var i in this.ExtendChartPaint){var item=this.ExtendChartPaint[i];item.SizeChange=bChanged;}};this.SetSizeChage=this.SetSizeChange;//根据X坐标获取数据索引
|
|
9355
9359
|
this.GetDataIndexByPoint=function(x){var frame=this.Frame;if(this.Frame.SubFrame&&this.Frame.SubFrame.length>0)frame=this.Frame.SubFrame[0].Frame;if(!frame)return;var value=frame.GetXData(x);var index=parseInt(value.toFixed(0));return index;};//不支持未来时间 目前只支持主图
|
|
@@ -15328,7 +15332,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
15328
15332
|
this.ExecuteScript(item,data);}this.Status=0;}};this.OnExecuteFinish=function(data,indexInfo,jsExectute,jobInfo){var message={Data:data,IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT,JobInfo:jobInfo};postMessage(message);};this.OnExecuteError=function(error,indexInfo,jobData){var message={IndexInfo:indexInfo,ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT,Error:error};postMessage(message);};}/********************************************************************************
|
|
15329
15333
|
* 版本信息输出
|
|
15330
15334
|
*
|
|
15331
|
-
*/var HQCHART_VERSION="1.1.
|
|
15335
|
+
*/var HQCHART_VERSION="1.1.15042";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
15332
15336
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
15333
15337
|
// BaseIndex:BaseIndex,
|
|
15334
15338
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
package/src/jscommon/umychart.js
CHANGED
|
@@ -422,7 +422,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
422
422
|
|
|
423
423
|
if (option.DrawTool) //画图工具
|
|
424
424
|
{
|
|
425
|
-
|
|
425
|
+
var item=option.DrawTool;
|
|
426
|
+
if (chart.ChartDrawStorage)
|
|
427
|
+
{
|
|
428
|
+
if (item.StorageKey) chart.ChartDrawStorage.Load(item.StorageKey);
|
|
429
|
+
if (IFrameSplitOperator.IsBool(item.EnableCrossPeriod)) chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;
|
|
430
|
+
}
|
|
431
|
+
|
|
426
432
|
}
|
|
427
433
|
|
|
428
434
|
if (option.KeyboardMove)
|
|
@@ -64630,10 +64636,89 @@ function IChartDrawPicture()
|
|
|
64630
64636
|
}
|
|
64631
64637
|
}
|
|
64632
64638
|
|
|
64633
|
-
this.
|
|
64639
|
+
this.GetkData=function()
|
|
64634
64640
|
{
|
|
64635
|
-
if (!this.Frame) return
|
|
64641
|
+
if (!this.Frame) return null;
|
|
64636
64642
|
var data=this.Frame.Data;
|
|
64643
|
+
if (!data) return null;
|
|
64644
|
+
|
|
64645
|
+
return data;
|
|
64646
|
+
}
|
|
64647
|
+
|
|
64648
|
+
//周期变动 X重新定位
|
|
64649
|
+
this.ChangePeriod=function(period)
|
|
64650
|
+
{
|
|
64651
|
+
var kData=this.GetkData();
|
|
64652
|
+
if (!kData) return;
|
|
64653
|
+
|
|
64654
|
+
var aryDateTime=[];
|
|
64655
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
64656
|
+
{
|
|
64657
|
+
var item=this.Value[i];
|
|
64658
|
+
if (!item.DateTime) break;
|
|
64659
|
+
var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
|
|
64660
|
+
if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
|
|
64661
|
+
aryDateTime[i]=dateTime;
|
|
64662
|
+
}
|
|
64663
|
+
|
|
64664
|
+
var findCount=0;
|
|
64665
|
+
var perData=null;
|
|
64666
|
+
var perIndex=-1;
|
|
64667
|
+
for(var i=0, j=0;i<kData.Data.length;++i)
|
|
64668
|
+
{
|
|
64669
|
+
var kItem=kData.Data[i];
|
|
64670
|
+
|
|
64671
|
+
for(j=0;j<aryDateTime.length;++j)
|
|
64672
|
+
{
|
|
64673
|
+
var item=aryDateTime[j];
|
|
64674
|
+
if (item.Match) continue;
|
|
64675
|
+
|
|
64676
|
+
if (ChartData.IsDayPeriod(period, true))
|
|
64677
|
+
{
|
|
64678
|
+
if (kItem.Date>item.Date)
|
|
64679
|
+
{
|
|
64680
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
64681
|
+
++findCount;
|
|
64682
|
+
}
|
|
64683
|
+
}
|
|
64684
|
+
else if (ChartData.IsMinutePeriod(period, true))
|
|
64685
|
+
{
|
|
64686
|
+
if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
|
|
64687
|
+
{
|
|
64688
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
64689
|
+
++findCount;
|
|
64690
|
+
}
|
|
64691
|
+
}
|
|
64692
|
+
}
|
|
64693
|
+
|
|
64694
|
+
perData=kItem;
|
|
64695
|
+
perIndex=i;
|
|
64696
|
+
|
|
64697
|
+
if (findCount>=aryDateTime.length) break;
|
|
64698
|
+
}
|
|
64699
|
+
|
|
64700
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
64701
|
+
{
|
|
64702
|
+
var item=aryDateTime[i];
|
|
64703
|
+
var valueItem=this.Value[i];
|
|
64704
|
+
if (item.Match && item.Match.KItem)
|
|
64705
|
+
{
|
|
64706
|
+
valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
|
|
64707
|
+
valueItem.XValue=item.Match.Index;
|
|
64708
|
+
}
|
|
64709
|
+
else
|
|
64710
|
+
{
|
|
64711
|
+
valueItem.DateTime=null;
|
|
64712
|
+
valueItem.XValue=null;
|
|
64713
|
+
}
|
|
64714
|
+
}
|
|
64715
|
+
|
|
64716
|
+
this.Period=period;
|
|
64717
|
+
}
|
|
64718
|
+
|
|
64719
|
+
this.UpdateXValue=function() //通过datetime更新x的索引
|
|
64720
|
+
{
|
|
64721
|
+
var data=this.GetkData();
|
|
64637
64722
|
if (!data) return false;
|
|
64638
64723
|
|
|
64639
64724
|
var aryDateTime=[];
|
|
@@ -76343,9 +76428,12 @@ function ChartDrawTVShortPosition()
|
|
|
76343
76428
|
|
|
76344
76429
|
function ChartDrawStorage()
|
|
76345
76430
|
{
|
|
76346
|
-
this.DrawData=new Map();
|
|
76431
|
+
//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
76432
|
+
this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
76433
|
+
|
|
76347
76434
|
this.StorageKey;
|
|
76348
|
-
this.GetEventCallback;
|
|
76435
|
+
this.GetEventCallback; //事件回调
|
|
76436
|
+
this.EnableCrossPeriod=false; //跨周期
|
|
76349
76437
|
|
|
76350
76438
|
this.Load=function(key) //从本地读取画图工具
|
|
76351
76439
|
{
|
|
@@ -76358,18 +76446,39 @@ function ChartDrawStorage()
|
|
|
76358
76446
|
if (typeof(cacheValue) != "string") return;
|
|
76359
76447
|
|
|
76360
76448
|
var saveData=JSON.parse(cacheValue);
|
|
76361
|
-
|
|
76362
|
-
{
|
|
76363
|
-
var item=saveData[i];
|
|
76364
|
-
var drawMap=new Map();
|
|
76449
|
+
if (!saveData) return;
|
|
76365
76450
|
|
|
76366
|
-
|
|
76451
|
+
if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
|
|
76452
|
+
{
|
|
76453
|
+
for(var i=0;i<saveData.length;++i)
|
|
76367
76454
|
{
|
|
76368
|
-
var
|
|
76369
|
-
|
|
76455
|
+
var item=saveData[i];
|
|
76456
|
+
for(var j=0;j<item.Value.length;++j)
|
|
76457
|
+
{
|
|
76458
|
+
var drawItem=item.Value[j];
|
|
76459
|
+
var symbol=drawItem.Value.Symbol;
|
|
76460
|
+
if (!this.DrawDataV2.has(symbol))
|
|
76461
|
+
this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
|
|
76462
|
+
|
|
76463
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
76464
|
+
stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
|
|
76465
|
+
}
|
|
76370
76466
|
}
|
|
76467
|
+
}
|
|
76468
|
+
else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
|
|
76469
|
+
{
|
|
76470
|
+
for(var i=0;i<saveData.Data.length;++i)
|
|
76471
|
+
{
|
|
76472
|
+
var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
|
|
76473
|
+
var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
|
|
76474
|
+
for(var j=0; j<item.AryPicture.length;++j)
|
|
76475
|
+
{
|
|
76476
|
+
var drawItem=item.AryPicture[j];
|
|
76477
|
+
stockItem.MapPicture.set(drawItem.Guid, drawItem);
|
|
76478
|
+
}
|
|
76371
76479
|
|
|
76372
|
-
|
|
76480
|
+
this.DrawDataV2.set(stockItem.Symbol,stockItem);
|
|
76481
|
+
}
|
|
76373
76482
|
}
|
|
76374
76483
|
}
|
|
76375
76484
|
|
|
@@ -76378,89 +76487,95 @@ function ChartDrawStorage()
|
|
|
76378
76487
|
if (!this.StorageKey) return;
|
|
76379
76488
|
|
|
76380
76489
|
var saveData=[];
|
|
76381
|
-
for(var
|
|
76490
|
+
for(var mapItem of this.DrawDataV2)
|
|
76382
76491
|
{
|
|
76383
|
-
var
|
|
76384
|
-
var
|
|
76385
|
-
var itemData={ Key:key, Value:[]};
|
|
76492
|
+
var symbol=mapItem[0];
|
|
76493
|
+
var stockItem=mapItem[1];
|
|
76386
76494
|
|
|
76387
|
-
|
|
76495
|
+
var itemData={ Symbol:symbol, AryPicture:[] };
|
|
76496
|
+
|
|
76497
|
+
for(var pictureItem of stockItem.MapPicture)
|
|
76388
76498
|
{
|
|
76389
|
-
|
|
76499
|
+
var drawItem=pictureItem[1];
|
|
76500
|
+
if (drawItem.EnableSave===false) continue;
|
|
76390
76501
|
|
|
76391
|
-
itemData.
|
|
76502
|
+
itemData.AryPicture.push(drawItem);
|
|
76392
76503
|
}
|
|
76393
76504
|
|
|
76394
|
-
if (IFrameSplitOperator.IsNonEmptyArray(itemData.
|
|
76505
|
+
if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
|
|
76395
76506
|
saveData.push(itemData);
|
|
76396
76507
|
}
|
|
76397
76508
|
|
|
76398
76509
|
JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
|
|
76399
|
-
var strData=JSON.stringify(saveData);
|
|
76510
|
+
var strData=JSON.stringify({Ver:2.0, Data:saveData});
|
|
76400
76511
|
localStorage[this.StorageKey]=strData;
|
|
76401
76512
|
}
|
|
76402
76513
|
|
|
76403
|
-
this.GetItemKey=function(obj) //生成每个画图工具的key
|
|
76404
|
-
{
|
|
76405
|
-
var strKey=`${obj.Symbol}-${obj.Period}`;
|
|
76406
|
-
return strKey;
|
|
76407
|
-
}
|
|
76408
|
-
|
|
76409
76514
|
this.SaveDrawData=function(drawPicture) //保存一个画图工具
|
|
76410
76515
|
{
|
|
76411
|
-
var
|
|
76516
|
+
var symbol=drawPicture.Symbol;
|
|
76412
76517
|
var data=drawPicture.ExportStorageData();
|
|
76413
76518
|
if (!data) return;
|
|
76414
76519
|
|
|
76415
|
-
if (this.
|
|
76520
|
+
if (this.DrawDataV2.has(symbol)) //更新
|
|
76416
76521
|
{
|
|
76417
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate:
|
|
76418
|
-
this.
|
|
76522
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
|
|
76523
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
76524
|
+
stockItem.MapPicture.set(data.Guid, data);
|
|
76419
76525
|
}
|
|
76420
76526
|
else //新增
|
|
76421
76527
|
{
|
|
76422
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert:
|
|
76423
|
-
var
|
|
76424
|
-
|
|
76425
|
-
this.
|
|
76528
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
|
|
76529
|
+
var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
|
|
76530
|
+
stockItem.set(data.Guid, data);
|
|
76531
|
+
this.DrawDataV2.set(symbol,newData);
|
|
76426
76532
|
}
|
|
76427
76533
|
|
|
76428
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.
|
|
76534
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
|
|
76429
76535
|
|
|
76430
76536
|
this.Save();
|
|
76431
76537
|
}
|
|
76432
76538
|
|
|
76433
76539
|
this.DeleteDrawData=function(drawPicture) //删除一个画图工具
|
|
76434
76540
|
{
|
|
76435
|
-
var
|
|
76436
|
-
if (!this.
|
|
76541
|
+
var symbol=drawPicture.Symbol;
|
|
76542
|
+
if (!this.DrawDataV2.has(symbol)) return;
|
|
76437
76543
|
|
|
76438
|
-
var
|
|
76439
|
-
if (!
|
|
76544
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
76545
|
+
if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
|
|
76440
76546
|
|
|
76441
|
-
|
|
76547
|
+
stockItem.MapPicture.delete(drawPicture.Guid);
|
|
76442
76548
|
this.Save();
|
|
76443
76549
|
}
|
|
76444
76550
|
|
|
76445
76551
|
this.Clear=function()
|
|
76446
76552
|
{
|
|
76447
|
-
this.
|
|
76553
|
+
this.DrawDataV2=new Map();
|
|
76448
76554
|
this.Save();
|
|
76449
76555
|
}
|
|
76450
76556
|
|
|
76451
|
-
this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
|
|
76557
|
+
this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
|
|
76452
76558
|
{
|
|
76453
|
-
var
|
|
76454
|
-
var
|
|
76455
|
-
if (!this.DrawData.has(strKey)) return data;
|
|
76559
|
+
var aryData=[];
|
|
76560
|
+
var symbol=obj.Symbol;
|
|
76456
76561
|
|
|
76457
|
-
|
|
76458
|
-
|
|
76562
|
+
if (!this.DrawDataV2.has(symbol)) return aryData;
|
|
76563
|
+
|
|
76564
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
76565
|
+
for(var mapItem of stockItem.MapPicture)
|
|
76459
76566
|
{
|
|
76460
|
-
|
|
76567
|
+
var drawItem=mapItem[1];
|
|
76568
|
+
if (this.EnableCrossPeriod)
|
|
76569
|
+
{
|
|
76570
|
+
aryData.push(drawItem);
|
|
76571
|
+
}
|
|
76572
|
+
else
|
|
76573
|
+
{
|
|
76574
|
+
if (drawItem.Period==obj.Period) aryData.push(drawItem);
|
|
76575
|
+
}
|
|
76461
76576
|
}
|
|
76462
76577
|
|
|
76463
|
-
return
|
|
76578
|
+
return aryData;
|
|
76464
76579
|
}
|
|
76465
76580
|
}
|
|
76466
76581
|
|
|
@@ -87781,7 +87896,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
87781
87896
|
drawPicture.Option=this.ChartDrawOption;
|
|
87782
87897
|
|
|
87783
87898
|
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
87784
|
-
drawPicture.
|
|
87899
|
+
if (drawPicture.Period!=this.Period)
|
|
87900
|
+
{
|
|
87901
|
+
drawPicture.ChangePeriod(this.Period);
|
|
87902
|
+
}
|
|
87903
|
+
else
|
|
87904
|
+
{
|
|
87905
|
+
drawPicture.UpdateXValue();
|
|
87906
|
+
}
|
|
87907
|
+
|
|
87908
|
+
|
|
87785
87909
|
drawPicture.ValueToPoint();
|
|
87786
87910
|
|
|
87787
87911
|
var self=this;
|
|
@@ -95579,7 +95703,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
95579
95703
|
{
|
|
95580
95704
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
95581
95705
|
|
|
95582
|
-
var
|
|
95706
|
+
var kData=this.GetKData();
|
|
95583
95707
|
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
95584
95708
|
{
|
|
95585
95709
|
var item=this.ChartDrawStorageCache[i];
|
|
@@ -4518,7 +4518,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4518
4518
|
|
|
4519
4519
|
if (option.DrawTool) //画图工具
|
|
4520
4520
|
{
|
|
4521
|
-
|
|
4521
|
+
var item=option.DrawTool;
|
|
4522
|
+
if (chart.ChartDrawStorage)
|
|
4523
|
+
{
|
|
4524
|
+
if (item.StorageKey) chart.ChartDrawStorage.Load(item.StorageKey);
|
|
4525
|
+
if (IFrameSplitOperator.IsBool(item.EnableCrossPeriod)) chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;
|
|
4526
|
+
}
|
|
4527
|
+
|
|
4522
4528
|
}
|
|
4523
4529
|
|
|
4524
4530
|
if (option.KeyboardMove)
|
|
@@ -68726,10 +68732,89 @@ function IChartDrawPicture()
|
|
|
68726
68732
|
}
|
|
68727
68733
|
}
|
|
68728
68734
|
|
|
68729
|
-
this.
|
|
68735
|
+
this.GetkData=function()
|
|
68730
68736
|
{
|
|
68731
|
-
if (!this.Frame) return
|
|
68737
|
+
if (!this.Frame) return null;
|
|
68732
68738
|
var data=this.Frame.Data;
|
|
68739
|
+
if (!data) return null;
|
|
68740
|
+
|
|
68741
|
+
return data;
|
|
68742
|
+
}
|
|
68743
|
+
|
|
68744
|
+
//周期变动 X重新定位
|
|
68745
|
+
this.ChangePeriod=function(period)
|
|
68746
|
+
{
|
|
68747
|
+
var kData=this.GetkData();
|
|
68748
|
+
if (!kData) return;
|
|
68749
|
+
|
|
68750
|
+
var aryDateTime=[];
|
|
68751
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
68752
|
+
{
|
|
68753
|
+
var item=this.Value[i];
|
|
68754
|
+
if (!item.DateTime) break;
|
|
68755
|
+
var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
|
|
68756
|
+
if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
|
|
68757
|
+
aryDateTime[i]=dateTime;
|
|
68758
|
+
}
|
|
68759
|
+
|
|
68760
|
+
var findCount=0;
|
|
68761
|
+
var perData=null;
|
|
68762
|
+
var perIndex=-1;
|
|
68763
|
+
for(var i=0, j=0;i<kData.Data.length;++i)
|
|
68764
|
+
{
|
|
68765
|
+
var kItem=kData.Data[i];
|
|
68766
|
+
|
|
68767
|
+
for(j=0;j<aryDateTime.length;++j)
|
|
68768
|
+
{
|
|
68769
|
+
var item=aryDateTime[j];
|
|
68770
|
+
if (item.Match) continue;
|
|
68771
|
+
|
|
68772
|
+
if (ChartData.IsDayPeriod(period, true))
|
|
68773
|
+
{
|
|
68774
|
+
if (kItem.Date>item.Date)
|
|
68775
|
+
{
|
|
68776
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68777
|
+
++findCount;
|
|
68778
|
+
}
|
|
68779
|
+
}
|
|
68780
|
+
else if (ChartData.IsMinutePeriod(period, true))
|
|
68781
|
+
{
|
|
68782
|
+
if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
|
|
68783
|
+
{
|
|
68784
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68785
|
+
++findCount;
|
|
68786
|
+
}
|
|
68787
|
+
}
|
|
68788
|
+
}
|
|
68789
|
+
|
|
68790
|
+
perData=kItem;
|
|
68791
|
+
perIndex=i;
|
|
68792
|
+
|
|
68793
|
+
if (findCount>=aryDateTime.length) break;
|
|
68794
|
+
}
|
|
68795
|
+
|
|
68796
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
68797
|
+
{
|
|
68798
|
+
var item=aryDateTime[i];
|
|
68799
|
+
var valueItem=this.Value[i];
|
|
68800
|
+
if (item.Match && item.Match.KItem)
|
|
68801
|
+
{
|
|
68802
|
+
valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
|
|
68803
|
+
valueItem.XValue=item.Match.Index;
|
|
68804
|
+
}
|
|
68805
|
+
else
|
|
68806
|
+
{
|
|
68807
|
+
valueItem.DateTime=null;
|
|
68808
|
+
valueItem.XValue=null;
|
|
68809
|
+
}
|
|
68810
|
+
}
|
|
68811
|
+
|
|
68812
|
+
this.Period=period;
|
|
68813
|
+
}
|
|
68814
|
+
|
|
68815
|
+
this.UpdateXValue=function() //通过datetime更新x的索引
|
|
68816
|
+
{
|
|
68817
|
+
var data=this.GetkData();
|
|
68733
68818
|
if (!data) return false;
|
|
68734
68819
|
|
|
68735
68820
|
var aryDateTime=[];
|
|
@@ -80439,9 +80524,12 @@ function ChartDrawTVShortPosition()
|
|
|
80439
80524
|
|
|
80440
80525
|
function ChartDrawStorage()
|
|
80441
80526
|
{
|
|
80442
|
-
this.DrawData=new Map();
|
|
80527
|
+
//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80528
|
+
this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80529
|
+
|
|
80443
80530
|
this.StorageKey;
|
|
80444
|
-
this.GetEventCallback;
|
|
80531
|
+
this.GetEventCallback; //事件回调
|
|
80532
|
+
this.EnableCrossPeriod=false; //跨周期
|
|
80445
80533
|
|
|
80446
80534
|
this.Load=function(key) //从本地读取画图工具
|
|
80447
80535
|
{
|
|
@@ -80454,18 +80542,39 @@ function ChartDrawStorage()
|
|
|
80454
80542
|
if (typeof(cacheValue) != "string") return;
|
|
80455
80543
|
|
|
80456
80544
|
var saveData=JSON.parse(cacheValue);
|
|
80457
|
-
|
|
80458
|
-
{
|
|
80459
|
-
var item=saveData[i];
|
|
80460
|
-
var drawMap=new Map();
|
|
80545
|
+
if (!saveData) return;
|
|
80461
80546
|
|
|
80462
|
-
|
|
80547
|
+
if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
|
|
80548
|
+
{
|
|
80549
|
+
for(var i=0;i<saveData.length;++i)
|
|
80463
80550
|
{
|
|
80464
|
-
var
|
|
80465
|
-
|
|
80551
|
+
var item=saveData[i];
|
|
80552
|
+
for(var j=0;j<item.Value.length;++j)
|
|
80553
|
+
{
|
|
80554
|
+
var drawItem=item.Value[j];
|
|
80555
|
+
var symbol=drawItem.Value.Symbol;
|
|
80556
|
+
if (!this.DrawDataV2.has(symbol))
|
|
80557
|
+
this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
|
|
80558
|
+
|
|
80559
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80560
|
+
stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
|
|
80561
|
+
}
|
|
80466
80562
|
}
|
|
80563
|
+
}
|
|
80564
|
+
else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
|
|
80565
|
+
{
|
|
80566
|
+
for(var i=0;i<saveData.Data.length;++i)
|
|
80567
|
+
{
|
|
80568
|
+
var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
|
|
80569
|
+
var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
|
|
80570
|
+
for(var j=0; j<item.AryPicture.length;++j)
|
|
80571
|
+
{
|
|
80572
|
+
var drawItem=item.AryPicture[j];
|
|
80573
|
+
stockItem.MapPicture.set(drawItem.Guid, drawItem);
|
|
80574
|
+
}
|
|
80467
80575
|
|
|
80468
|
-
|
|
80576
|
+
this.DrawDataV2.set(stockItem.Symbol,stockItem);
|
|
80577
|
+
}
|
|
80469
80578
|
}
|
|
80470
80579
|
}
|
|
80471
80580
|
|
|
@@ -80474,89 +80583,95 @@ function ChartDrawStorage()
|
|
|
80474
80583
|
if (!this.StorageKey) return;
|
|
80475
80584
|
|
|
80476
80585
|
var saveData=[];
|
|
80477
|
-
for(var
|
|
80586
|
+
for(var mapItem of this.DrawDataV2)
|
|
80478
80587
|
{
|
|
80479
|
-
var
|
|
80480
|
-
var
|
|
80481
|
-
var itemData={ Key:key, Value:[]};
|
|
80588
|
+
var symbol=mapItem[0];
|
|
80589
|
+
var stockItem=mapItem[1];
|
|
80482
80590
|
|
|
80483
|
-
|
|
80591
|
+
var itemData={ Symbol:symbol, AryPicture:[] };
|
|
80592
|
+
|
|
80593
|
+
for(var pictureItem of stockItem.MapPicture)
|
|
80484
80594
|
{
|
|
80485
|
-
|
|
80595
|
+
var drawItem=pictureItem[1];
|
|
80596
|
+
if (drawItem.EnableSave===false) continue;
|
|
80486
80597
|
|
|
80487
|
-
itemData.
|
|
80598
|
+
itemData.AryPicture.push(drawItem);
|
|
80488
80599
|
}
|
|
80489
80600
|
|
|
80490
|
-
if (IFrameSplitOperator.IsNonEmptyArray(itemData.
|
|
80601
|
+
if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
|
|
80491
80602
|
saveData.push(itemData);
|
|
80492
80603
|
}
|
|
80493
80604
|
|
|
80494
80605
|
JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
|
|
80495
|
-
var strData=JSON.stringify(saveData);
|
|
80606
|
+
var strData=JSON.stringify({Ver:2.0, Data:saveData});
|
|
80496
80607
|
localStorage[this.StorageKey]=strData;
|
|
80497
80608
|
}
|
|
80498
80609
|
|
|
80499
|
-
this.GetItemKey=function(obj) //生成每个画图工具的key
|
|
80500
|
-
{
|
|
80501
|
-
var strKey=`${obj.Symbol}-${obj.Period}`;
|
|
80502
|
-
return strKey;
|
|
80503
|
-
}
|
|
80504
|
-
|
|
80505
80610
|
this.SaveDrawData=function(drawPicture) //保存一个画图工具
|
|
80506
80611
|
{
|
|
80507
|
-
var
|
|
80612
|
+
var symbol=drawPicture.Symbol;
|
|
80508
80613
|
var data=drawPicture.ExportStorageData();
|
|
80509
80614
|
if (!data) return;
|
|
80510
80615
|
|
|
80511
|
-
if (this.
|
|
80616
|
+
if (this.DrawDataV2.has(symbol)) //更新
|
|
80512
80617
|
{
|
|
80513
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate:
|
|
80514
|
-
this.
|
|
80618
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
|
|
80619
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80620
|
+
stockItem.MapPicture.set(data.Guid, data);
|
|
80515
80621
|
}
|
|
80516
80622
|
else //新增
|
|
80517
80623
|
{
|
|
80518
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert:
|
|
80519
|
-
var
|
|
80520
|
-
|
|
80521
|
-
this.
|
|
80624
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
|
|
80625
|
+
var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
|
|
80626
|
+
stockItem.set(data.Guid, data);
|
|
80627
|
+
this.DrawDataV2.set(symbol,newData);
|
|
80522
80628
|
}
|
|
80523
80629
|
|
|
80524
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.
|
|
80630
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
|
|
80525
80631
|
|
|
80526
80632
|
this.Save();
|
|
80527
80633
|
}
|
|
80528
80634
|
|
|
80529
80635
|
this.DeleteDrawData=function(drawPicture) //删除一个画图工具
|
|
80530
80636
|
{
|
|
80531
|
-
var
|
|
80532
|
-
if (!this.
|
|
80637
|
+
var symbol=drawPicture.Symbol;
|
|
80638
|
+
if (!this.DrawDataV2.has(symbol)) return;
|
|
80533
80639
|
|
|
80534
|
-
var
|
|
80535
|
-
if (!
|
|
80640
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80641
|
+
if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
|
|
80536
80642
|
|
|
80537
|
-
|
|
80643
|
+
stockItem.MapPicture.delete(drawPicture.Guid);
|
|
80538
80644
|
this.Save();
|
|
80539
80645
|
}
|
|
80540
80646
|
|
|
80541
80647
|
this.Clear=function()
|
|
80542
80648
|
{
|
|
80543
|
-
this.
|
|
80649
|
+
this.DrawDataV2=new Map();
|
|
80544
80650
|
this.Save();
|
|
80545
80651
|
}
|
|
80546
80652
|
|
|
80547
|
-
this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
|
|
80653
|
+
this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
|
|
80548
80654
|
{
|
|
80549
|
-
var
|
|
80550
|
-
var
|
|
80551
|
-
if (!this.DrawData.has(strKey)) return data;
|
|
80655
|
+
var aryData=[];
|
|
80656
|
+
var symbol=obj.Symbol;
|
|
80552
80657
|
|
|
80553
|
-
|
|
80554
|
-
|
|
80658
|
+
if (!this.DrawDataV2.has(symbol)) return aryData;
|
|
80659
|
+
|
|
80660
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80661
|
+
for(var mapItem of stockItem.MapPicture)
|
|
80555
80662
|
{
|
|
80556
|
-
|
|
80663
|
+
var drawItem=mapItem[1];
|
|
80664
|
+
if (this.EnableCrossPeriod)
|
|
80665
|
+
{
|
|
80666
|
+
aryData.push(drawItem);
|
|
80667
|
+
}
|
|
80668
|
+
else
|
|
80669
|
+
{
|
|
80670
|
+
if (drawItem.Period==obj.Period) aryData.push(drawItem);
|
|
80671
|
+
}
|
|
80557
80672
|
}
|
|
80558
80673
|
|
|
80559
|
-
return
|
|
80674
|
+
return aryData;
|
|
80560
80675
|
}
|
|
80561
80676
|
}
|
|
80562
80677
|
|
|
@@ -91877,7 +91992,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
91877
91992
|
drawPicture.Option=this.ChartDrawOption;
|
|
91878
91993
|
|
|
91879
91994
|
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
91880
|
-
drawPicture.
|
|
91995
|
+
if (drawPicture.Period!=this.Period)
|
|
91996
|
+
{
|
|
91997
|
+
drawPicture.ChangePeriod(this.Period);
|
|
91998
|
+
}
|
|
91999
|
+
else
|
|
92000
|
+
{
|
|
92001
|
+
drawPicture.UpdateXValue();
|
|
92002
|
+
}
|
|
92003
|
+
|
|
92004
|
+
|
|
91881
92005
|
drawPicture.ValueToPoint();
|
|
91882
92006
|
|
|
91883
92007
|
var self=this;
|
|
@@ -99675,7 +99799,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
99675
99799
|
{
|
|
99676
99800
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
99677
99801
|
|
|
99678
|
-
var
|
|
99802
|
+
var kData=this.GetKData();
|
|
99679
99803
|
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
99680
99804
|
{
|
|
99681
99805
|
var item=this.ChartDrawStorageCache[i];
|
|
@@ -153171,7 +153295,7 @@ function ScrollBarBGChart()
|
|
|
153171
153295
|
|
|
153172
153296
|
|
|
153173
153297
|
|
|
153174
|
-
var HQCHART_VERSION="1.1.
|
|
153298
|
+
var HQCHART_VERSION="1.1.15042";
|
|
153175
153299
|
|
|
153176
153300
|
function PrintHQChartVersion()
|
|
153177
153301
|
{
|
|
@@ -4562,7 +4562,13 @@ function JSChart(divElement, bOffscreen, bCacheCanvas)
|
|
|
4562
4562
|
|
|
4563
4563
|
if (option.DrawTool) //画图工具
|
|
4564
4564
|
{
|
|
4565
|
-
|
|
4565
|
+
var item=option.DrawTool;
|
|
4566
|
+
if (chart.ChartDrawStorage)
|
|
4567
|
+
{
|
|
4568
|
+
if (item.StorageKey) chart.ChartDrawStorage.Load(item.StorageKey);
|
|
4569
|
+
if (IFrameSplitOperator.IsBool(item.EnableCrossPeriod)) chart.ChartDrawStorage.EnableCrossPeriod=item.EnableCrossPeriod;
|
|
4570
|
+
}
|
|
4571
|
+
|
|
4566
4572
|
}
|
|
4567
4573
|
|
|
4568
4574
|
if (option.KeyboardMove)
|
|
@@ -68770,10 +68776,89 @@ function IChartDrawPicture()
|
|
|
68770
68776
|
}
|
|
68771
68777
|
}
|
|
68772
68778
|
|
|
68773
|
-
this.
|
|
68779
|
+
this.GetkData=function()
|
|
68774
68780
|
{
|
|
68775
|
-
if (!this.Frame) return
|
|
68781
|
+
if (!this.Frame) return null;
|
|
68776
68782
|
var data=this.Frame.Data;
|
|
68783
|
+
if (!data) return null;
|
|
68784
|
+
|
|
68785
|
+
return data;
|
|
68786
|
+
}
|
|
68787
|
+
|
|
68788
|
+
//周期变动 X重新定位
|
|
68789
|
+
this.ChangePeriod=function(period)
|
|
68790
|
+
{
|
|
68791
|
+
var kData=this.GetkData();
|
|
68792
|
+
if (!kData) return;
|
|
68793
|
+
|
|
68794
|
+
var aryDateTime=[];
|
|
68795
|
+
for(var i=0; i<this.Value.length; ++i)
|
|
68796
|
+
{
|
|
68797
|
+
var item=this.Value[i];
|
|
68798
|
+
if (!item.DateTime) break;
|
|
68799
|
+
var dateTime={ Date:item.DateTime.Date, Time:0, Match:null };
|
|
68800
|
+
if (IFrameSplitOperator.IsNumber(item.DateTime.Time)) dateTime.Time=item.DateTime.Time;
|
|
68801
|
+
aryDateTime[i]=dateTime;
|
|
68802
|
+
}
|
|
68803
|
+
|
|
68804
|
+
var findCount=0;
|
|
68805
|
+
var perData=null;
|
|
68806
|
+
var perIndex=-1;
|
|
68807
|
+
for(var i=0, j=0;i<kData.Data.length;++i)
|
|
68808
|
+
{
|
|
68809
|
+
var kItem=kData.Data[i];
|
|
68810
|
+
|
|
68811
|
+
for(j=0;j<aryDateTime.length;++j)
|
|
68812
|
+
{
|
|
68813
|
+
var item=aryDateTime[j];
|
|
68814
|
+
if (item.Match) continue;
|
|
68815
|
+
|
|
68816
|
+
if (ChartData.IsDayPeriod(period, true))
|
|
68817
|
+
{
|
|
68818
|
+
if (kItem.Date>item.Date)
|
|
68819
|
+
{
|
|
68820
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68821
|
+
++findCount;
|
|
68822
|
+
}
|
|
68823
|
+
}
|
|
68824
|
+
else if (ChartData.IsMinutePeriod(period, true))
|
|
68825
|
+
{
|
|
68826
|
+
if (kItem.Date>item.Date || (kItem.Date==item.Date && kItem.Time>item.Time))
|
|
68827
|
+
{
|
|
68828
|
+
item.Match={ KItem:perData, Index:perIndex };
|
|
68829
|
+
++findCount;
|
|
68830
|
+
}
|
|
68831
|
+
}
|
|
68832
|
+
}
|
|
68833
|
+
|
|
68834
|
+
perData=kItem;
|
|
68835
|
+
perIndex=i;
|
|
68836
|
+
|
|
68837
|
+
if (findCount>=aryDateTime.length) break;
|
|
68838
|
+
}
|
|
68839
|
+
|
|
68840
|
+
for(var i=0;i<aryDateTime.length;++i)
|
|
68841
|
+
{
|
|
68842
|
+
var item=aryDateTime[i];
|
|
68843
|
+
var valueItem=this.Value[i];
|
|
68844
|
+
if (item.Match && item.Match.KItem)
|
|
68845
|
+
{
|
|
68846
|
+
valueItem.DateTime={ Date:item.Match.Date, Time:item.Match.Time };
|
|
68847
|
+
valueItem.XValue=item.Match.Index;
|
|
68848
|
+
}
|
|
68849
|
+
else
|
|
68850
|
+
{
|
|
68851
|
+
valueItem.DateTime=null;
|
|
68852
|
+
valueItem.XValue=null;
|
|
68853
|
+
}
|
|
68854
|
+
}
|
|
68855
|
+
|
|
68856
|
+
this.Period=period;
|
|
68857
|
+
}
|
|
68858
|
+
|
|
68859
|
+
this.UpdateXValue=function() //通过datetime更新x的索引
|
|
68860
|
+
{
|
|
68861
|
+
var data=this.GetkData();
|
|
68777
68862
|
if (!data) return false;
|
|
68778
68863
|
|
|
68779
68864
|
var aryDateTime=[];
|
|
@@ -80483,9 +80568,12 @@ function ChartDrawTVShortPosition()
|
|
|
80483
80568
|
|
|
80484
80569
|
function ChartDrawStorage()
|
|
80485
80570
|
{
|
|
80486
|
-
this.DrawData=new Map();
|
|
80571
|
+
//this.DrawData=new Map(); //画图工具数据 key=symbol-Period, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80572
|
+
this.DrawDataV2=new Map(); //画图工具数据 key=symbol, value=Map() Key:Guid, Value:{ Guid, Symbol, Period, ClassName, Value }
|
|
80573
|
+
|
|
80487
80574
|
this.StorageKey;
|
|
80488
|
-
this.GetEventCallback;
|
|
80575
|
+
this.GetEventCallback; //事件回调
|
|
80576
|
+
this.EnableCrossPeriod=false; //跨周期
|
|
80489
80577
|
|
|
80490
80578
|
this.Load=function(key) //从本地读取画图工具
|
|
80491
80579
|
{
|
|
@@ -80498,18 +80586,39 @@ function ChartDrawStorage()
|
|
|
80498
80586
|
if (typeof(cacheValue) != "string") return;
|
|
80499
80587
|
|
|
80500
80588
|
var saveData=JSON.parse(cacheValue);
|
|
80501
|
-
|
|
80502
|
-
{
|
|
80503
|
-
var item=saveData[i];
|
|
80504
|
-
var drawMap=new Map();
|
|
80589
|
+
if (!saveData) return;
|
|
80505
80590
|
|
|
80506
|
-
|
|
80591
|
+
if (IFrameSplitOperator.IsNonEmptyArray(saveData)) //老版本 key=symbol-Period
|
|
80592
|
+
{
|
|
80593
|
+
for(var i=0;i<saveData.length;++i)
|
|
80507
80594
|
{
|
|
80508
|
-
var
|
|
80509
|
-
|
|
80595
|
+
var item=saveData[i];
|
|
80596
|
+
for(var j=0;j<item.Value.length;++j)
|
|
80597
|
+
{
|
|
80598
|
+
var drawItem=item.Value[j];
|
|
80599
|
+
var symbol=drawItem.Value.Symbol;
|
|
80600
|
+
if (!this.DrawDataV2.has(symbol))
|
|
80601
|
+
this.DrawDataV2.set(symbol, {Symbol:symbol, MapPicture: new Map() });
|
|
80602
|
+
|
|
80603
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80604
|
+
stockItem.MapPicture.set(drawItem.Value.Guid, drawItem.Value);
|
|
80605
|
+
}
|
|
80510
80606
|
}
|
|
80607
|
+
}
|
|
80608
|
+
else if (saveData.Ver==2.0 && IFrameSplitOperator.IsNonEmptyArray(saveData.Data))
|
|
80609
|
+
{
|
|
80610
|
+
for(var i=0;i<saveData.Data.length;++i)
|
|
80611
|
+
{
|
|
80612
|
+
var item=saveData.Data[i]; //{ Symbol:, AryPicture:[ { Guid, Symbol, Period, ClassName, Value }, ] }
|
|
80613
|
+
var stockItem={ Symbol:item.Symbol, MapPicture:new Map() };
|
|
80614
|
+
for(var j=0; j<item.AryPicture.length;++j)
|
|
80615
|
+
{
|
|
80616
|
+
var drawItem=item.AryPicture[j];
|
|
80617
|
+
stockItem.MapPicture.set(drawItem.Guid, drawItem);
|
|
80618
|
+
}
|
|
80511
80619
|
|
|
80512
|
-
|
|
80620
|
+
this.DrawDataV2.set(stockItem.Symbol,stockItem);
|
|
80621
|
+
}
|
|
80513
80622
|
}
|
|
80514
80623
|
}
|
|
80515
80624
|
|
|
@@ -80518,89 +80627,95 @@ function ChartDrawStorage()
|
|
|
80518
80627
|
if (!this.StorageKey) return;
|
|
80519
80628
|
|
|
80520
80629
|
var saveData=[];
|
|
80521
|
-
for(var
|
|
80630
|
+
for(var mapItem of this.DrawDataV2)
|
|
80522
80631
|
{
|
|
80523
|
-
var
|
|
80524
|
-
var
|
|
80525
|
-
var itemData={ Key:key, Value:[]};
|
|
80632
|
+
var symbol=mapItem[0];
|
|
80633
|
+
var stockItem=mapItem[1];
|
|
80526
80634
|
|
|
80527
|
-
|
|
80635
|
+
var itemData={ Symbol:symbol, AryPicture:[] };
|
|
80636
|
+
|
|
80637
|
+
for(var pictureItem of stockItem.MapPicture)
|
|
80528
80638
|
{
|
|
80529
|
-
|
|
80639
|
+
var drawItem=pictureItem[1];
|
|
80640
|
+
if (drawItem.EnableSave===false) continue;
|
|
80530
80641
|
|
|
80531
|
-
itemData.
|
|
80642
|
+
itemData.AryPicture.push(drawItem);
|
|
80532
80643
|
}
|
|
80533
80644
|
|
|
80534
|
-
if (IFrameSplitOperator.IsNonEmptyArray(itemData.
|
|
80645
|
+
if (IFrameSplitOperator.IsNonEmptyArray(itemData.AryPicture))
|
|
80535
80646
|
saveData.push(itemData);
|
|
80536
80647
|
}
|
|
80537
80648
|
|
|
80538
80649
|
JSConsole.Chart.Log(`[ChartDrawStorage::Save] save to localStorage, key=${this.StorageKey}`);
|
|
80539
|
-
var strData=JSON.stringify(saveData);
|
|
80650
|
+
var strData=JSON.stringify({Ver:2.0, Data:saveData});
|
|
80540
80651
|
localStorage[this.StorageKey]=strData;
|
|
80541
80652
|
}
|
|
80542
80653
|
|
|
80543
|
-
this.GetItemKey=function(obj) //生成每个画图工具的key
|
|
80544
|
-
{
|
|
80545
|
-
var strKey=`${obj.Symbol}-${obj.Period}`;
|
|
80546
|
-
return strKey;
|
|
80547
|
-
}
|
|
80548
|
-
|
|
80549
80654
|
this.SaveDrawData=function(drawPicture) //保存一个画图工具
|
|
80550
80655
|
{
|
|
80551
|
-
var
|
|
80656
|
+
var symbol=drawPicture.Symbol;
|
|
80552
80657
|
var data=drawPicture.ExportStorageData();
|
|
80553
80658
|
if (!data) return;
|
|
80554
80659
|
|
|
80555
|
-
if (this.
|
|
80660
|
+
if (this.DrawDataV2.has(symbol)) //更新
|
|
80556
80661
|
{
|
|
80557
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate:
|
|
80558
|
-
this.
|
|
80662
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Upate: symbol, drawPicture, data', symbol, drawPicture, data);
|
|
80663
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80664
|
+
stockItem.MapPicture.set(data.Guid, data);
|
|
80559
80665
|
}
|
|
80560
80666
|
else //新增
|
|
80561
80667
|
{
|
|
80562
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert:
|
|
80563
|
-
var
|
|
80564
|
-
|
|
80565
|
-
this.
|
|
80668
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] Insert: symbol, drawPicture, data', symbol, drawPicture,data);
|
|
80669
|
+
var stockItem={ Symbol:symbol, MapPicture:new Map() } ;
|
|
80670
|
+
stockItem.set(data.Guid, data);
|
|
80671
|
+
this.DrawDataV2.set(symbol,newData);
|
|
80566
80672
|
}
|
|
80567
80673
|
|
|
80568
|
-
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.
|
|
80674
|
+
JSConsole.Chart.Log('[ChartDrawStorage::SaveDrawData] All draw data: ', this.DrawDataV2);
|
|
80569
80675
|
|
|
80570
80676
|
this.Save();
|
|
80571
80677
|
}
|
|
80572
80678
|
|
|
80573
80679
|
this.DeleteDrawData=function(drawPicture) //删除一个画图工具
|
|
80574
80680
|
{
|
|
80575
|
-
var
|
|
80576
|
-
if (!this.
|
|
80681
|
+
var symbol=drawPicture.Symbol;
|
|
80682
|
+
if (!this.DrawDataV2.has(symbol)) return;
|
|
80577
80683
|
|
|
80578
|
-
var
|
|
80579
|
-
if (!
|
|
80684
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80685
|
+
if (!stockItem.MapPicture.has(drawPicture.Guid)) return;
|
|
80580
80686
|
|
|
80581
|
-
|
|
80687
|
+
stockItem.MapPicture.delete(drawPicture.Guid);
|
|
80582
80688
|
this.Save();
|
|
80583
80689
|
}
|
|
80584
80690
|
|
|
80585
80691
|
this.Clear=function()
|
|
80586
80692
|
{
|
|
80587
|
-
this.
|
|
80693
|
+
this.DrawDataV2=new Map();
|
|
80588
80694
|
this.Save();
|
|
80589
80695
|
}
|
|
80590
80696
|
|
|
80591
|
-
this.GetDrawData=function(obj) //获取已有的画图工具数据{Symbol: , Period:, }
|
|
80697
|
+
this.GetDrawData=function(obj) //获取已有的画图工具数据{ Symbol: , Period:, }
|
|
80592
80698
|
{
|
|
80593
|
-
var
|
|
80594
|
-
var
|
|
80595
|
-
if (!this.DrawData.has(strKey)) return data;
|
|
80699
|
+
var aryData=[];
|
|
80700
|
+
var symbol=obj.Symbol;
|
|
80596
80701
|
|
|
80597
|
-
|
|
80598
|
-
|
|
80702
|
+
if (!this.DrawDataV2.has(symbol)) return aryData;
|
|
80703
|
+
|
|
80704
|
+
var stockItem=this.DrawDataV2.get(symbol);
|
|
80705
|
+
for(var mapItem of stockItem.MapPicture)
|
|
80599
80706
|
{
|
|
80600
|
-
|
|
80707
|
+
var drawItem=mapItem[1];
|
|
80708
|
+
if (this.EnableCrossPeriod)
|
|
80709
|
+
{
|
|
80710
|
+
aryData.push(drawItem);
|
|
80711
|
+
}
|
|
80712
|
+
else
|
|
80713
|
+
{
|
|
80714
|
+
if (drawItem.Period==obj.Period) aryData.push(drawItem);
|
|
80715
|
+
}
|
|
80601
80716
|
}
|
|
80602
80717
|
|
|
80603
|
-
return
|
|
80718
|
+
return aryData;
|
|
80604
80719
|
}
|
|
80605
80720
|
}
|
|
80606
80721
|
|
|
@@ -91921,7 +92036,16 @@ function KLineChartContainer(uielement,OffscreenElement, cacheElement)
|
|
|
91921
92036
|
drawPicture.Option=this.ChartDrawOption;
|
|
91922
92037
|
|
|
91923
92038
|
if (drawPicture.ImportStorageData) drawPicture.ImportStorageData(item);
|
|
91924
|
-
drawPicture.
|
|
92039
|
+
if (drawPicture.Period!=this.Period)
|
|
92040
|
+
{
|
|
92041
|
+
drawPicture.ChangePeriod(this.Period);
|
|
92042
|
+
}
|
|
92043
|
+
else
|
|
92044
|
+
{
|
|
92045
|
+
drawPicture.UpdateXValue();
|
|
92046
|
+
}
|
|
92047
|
+
|
|
92048
|
+
|
|
91925
92049
|
drawPicture.ValueToPoint();
|
|
91926
92050
|
|
|
91927
92051
|
var self=this;
|
|
@@ -99719,7 +99843,7 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
99719
99843
|
{
|
|
99720
99844
|
if (!this.ChartDrawStorageCache || this.ChartDrawStorageCache.length<=0) return;
|
|
99721
99845
|
|
|
99722
|
-
var
|
|
99846
|
+
var kData=this.GetKData();
|
|
99723
99847
|
for(var i=0; i<this.ChartDrawStorageCache.length; ++i)
|
|
99724
99848
|
{
|
|
99725
99849
|
var item=this.ChartDrawStorageCache[i];
|
|
@@ -165017,7 +165141,7 @@ function HQChartScriptWorker()
|
|
|
165017
165141
|
|
|
165018
165142
|
|
|
165019
165143
|
|
|
165020
|
-
var HQCHART_VERSION="1.1.
|
|
165144
|
+
var HQCHART_VERSION="1.1.15042";
|
|
165021
165145
|
|
|
165022
165146
|
function PrintHQChartVersion()
|
|
165023
165147
|
{
|