diff --git a/README.md b/README.md index 9d414ca81368a9fe860487bf26668cadd927e9a8..5dbf13075662ef4c53172de267268e49570730c3 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,7 @@ React 例子:[demo-react.md](/教程/demo-react.md)
## 高级应用实战教程(付费文章) 1. [HQChart实战教程19 - PC端分时图定制tooltip](https://blog.csdn.net/jones2000/article/details/108633991)
2. [HQChart实战教程20 - PC端K线图定制tooltip](https://blog.csdn.net/jones2000/article/details/108639960)
+3. [HQChart实战教程21 - unapp app端分时图定制tooltip](https://blog.csdn.net/jones2000/article/details/108657043)
diff --git a/umychart_uniapp_h5/umychart.uniapp.h5.js b/umychart_uniapp_h5/umychart.uniapp.h5.js index bd9a7099b0399abcaa152fce62f66a895b3056da..22bf6b95d8cc54b252fcc65c2cab9aca0a0f8efc 100644 --- a/umychart_uniapp_h5/umychart.uniapp.h5.js +++ b/umychart_uniapp_h5/umychart.uniapp.h5.js @@ -4084,9 +4084,11 @@ function JSChart(divElement) { var item=option.OverlayIndex[i]; if (item.Windows>=chart.Frame.SubFrame.length) continue; - var obj={ WindowIndex:item.Windows,IndexName: item.Index, ShowRightText:item.ShowRightText }; - if (item.Args) obj.Args=item.Args; - if (item.API) obj.API=item.API; + + var itemString = JSON.stringify(item); + var obj = JSON.parse(itemString); + if (item.Index) obj.IndexName=item.Index; + if (item.Windows>=0) obj.WindowIndex=item.Windows; chart.CreateOverlayWindowsIndex(obj); } @@ -7488,6 +7490,14 @@ function JSChartContainer(uielement) if (IFrameSplitOperator.IsBool(option.IsLockScreen)) this.ChartDrawOption.IsLockScreen=option.IsLockScreen; if (IFrameSplitOperator.IsNumber(option.Zoom) && option.Zoom>=0) this.ChartDrawOption.Zoom=option.Zoom; } + + //是否显示十字光标的十字线 + this.EnableShowCorssCursorLine=function(bShow) + { + if (!this.ChartCorssCursor) return; + + this.ChartCorssCursor.IsShowCorss=bShow; + } } function GetDevicePixelRatio() @@ -17979,58 +17989,72 @@ function ChartBand() var y2 = 0; var firstlinePoints = []; var secondlinePoints = []; - var lIndex = 0; - for(var i=this.Data.DataOffset,j=0;i 1) - { - this.Canvas.save(); - this.Canvas.beginPath(); - for (var i = 0; i < firstlinePoints.length; ++i) + firstlinePoints = []; + secondlinePoints = []; + for(;i= 0; --j) - { - this.Canvas.lineTo(secondlinePoints[j].x, secondlinePoints[j].y); - } - this.Canvas.closePath(); - this.Canvas.clip(); - this.Canvas.beginPath(); - this.Canvas.moveTo(firstlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < firstlinePoints.length; ++i) - { - this.Canvas.lineTo(firstlinePoints[i].x, firstlinePoints[i].y); + var value=this.Data.Data[i]; + if (value==null || value.Value==null || value.Value2 == null) break; + x=this.ChartFrame.GetXFromIndex(j); + y=this.ChartFrame.GetYFromData(value.Value); + y2 = this.ChartFrame.GetYFromData(value.Value2); + firstlinePoints.push({x:x,y:y}); + secondlinePoints.push({x:x,y:y2}); } - this.Canvas.lineTo(firstlinePoints[firstlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.FirstColor; - this.Canvas.fill(); - this.Canvas.beginPath(); - this.Canvas.moveTo(secondlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < secondlinePoints.length; ++i) + + if (firstlinePoints.length>1 && secondlinePoints.length>1) { - this.Canvas.lineTo(secondlinePoints[i].x, secondlinePoints[i].y); + this.DrawBand(firstlinePoints, secondlinePoints); } - this.Canvas.lineTo(secondlinePoints[secondlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.SecondColor; - this.Canvas.fill(); - this.Canvas.restore(); } } + + this.DrawBand=function(aryFrist, arySecond) + { + this.Canvas.save(); + this.Canvas.beginPath(); + for(var i=0;i= 0; --i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.closePath(); + this.Canvas.clip(); + + this.Canvas.moveTo(aryFrist[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < aryFrist.length; ++i) + { + this.Canvas.lineTo(aryFrist[i].x, aryFrist[i].y); + } + this.Canvas.lineTo(aryFrist[aryFrist.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.FirstColor; + this.Canvas.fill(); + + this.Canvas.beginPath(); + this.Canvas.moveTo(arySecond[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < arySecond.length; ++i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.lineTo(arySecond[arySecond.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.SecondColor; + this.Canvas.fill(); + + this.Canvas.restore(); + } + + this.GetMaxMin=function() { var xPointCount=this.ChartFrame.XPointCount; @@ -33020,6 +33044,11 @@ function KLineChartContainer(uielement) { apiItem=obj.API; } + else if (obj.Script) //动态执行脚本 + { + indexInfo={ Script:obj.Script, ID:obj.indexName, Name:obj.indexName}; + if (obj.Name) indexInfo.Name=obj.Name; + } else { let scriptData = new JSIndexScript(); @@ -33063,13 +33092,7 @@ function KLineChartContainer(uielement) } else if (indexInfo) { - let indexData = - { - Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName , - //扩展属性 可以是空 - KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale, - FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition, - }; + let indexData = indexInfo; if (obj.Args) indexData.Args=obj.Args; //外部可以设置参数 var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行 diff --git a/vuehqchart/src/jscommon/umychart.js b/vuehqchart/src/jscommon/umychart.js index d980693648fc5850fb353132a54bc686acaec5bc..b998910f7386e11cb1fea48d1bdbb3bd36256804 100644 --- a/vuehqchart/src/jscommon/umychart.js +++ b/vuehqchart/src/jscommon/umychart.js @@ -397,9 +397,11 @@ function JSChart(divElement) { var item=option.OverlayIndex[i]; if (item.Windows>=chart.Frame.SubFrame.length) continue; - var obj={ WindowIndex:item.Windows,IndexName: item.Index, ShowRightText:item.ShowRightText }; - if (item.Args) obj.Args=item.Args; - if (item.API) obj.API=item.API; + + var itemString = JSON.stringify(item); + var obj = JSON.parse(itemString); + if (item.Index) obj.IndexName=item.Index; + if (item.Windows>=0) obj.WindowIndex=item.Windows; chart.CreateOverlayWindowsIndex(obj); } @@ -3801,6 +3803,14 @@ function JSChartContainer(uielement) if (IFrameSplitOperator.IsBool(option.IsLockScreen)) this.ChartDrawOption.IsLockScreen=option.IsLockScreen; if (IFrameSplitOperator.IsNumber(option.Zoom) && option.Zoom>=0) this.ChartDrawOption.Zoom=option.Zoom; } + + //是否显示十字光标的十字线 + this.EnableShowCorssCursorLine=function(bShow) + { + if (!this.ChartCorssCursor) return; + + this.ChartCorssCursor.IsShowCorss=bShow; + } } function GetDevicePixelRatio() @@ -14292,58 +14302,72 @@ function ChartBand() var y2 = 0; var firstlinePoints = []; var secondlinePoints = []; - var lIndex = 0; - for(var i=this.Data.DataOffset,j=0;i 1) + for(var i=this.Data.DataOffset,j=0; i= 0; --j) - { - this.Canvas.lineTo(secondlinePoints[j].x, secondlinePoints[j].y); - } - this.Canvas.closePath(); - this.Canvas.clip(); - this.Canvas.beginPath(); - this.Canvas.moveTo(firstlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < firstlinePoints.length; ++i) + firstlinePoints = []; + secondlinePoints = []; + for(;i1 && secondlinePoints.length>1) { - this.Canvas.lineTo(secondlinePoints[i].x, secondlinePoints[i].y); + this.DrawBand(firstlinePoints, secondlinePoints); } - this.Canvas.lineTo(secondlinePoints[secondlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.SecondColor; - this.Canvas.fill(); - this.Canvas.restore(); } } + + this.DrawBand=function(aryFrist, arySecond) + { + this.Canvas.save(); + this.Canvas.beginPath(); + for(var i=0;i= 0; --i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.closePath(); + this.Canvas.clip(); + + this.Canvas.moveTo(aryFrist[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < aryFrist.length; ++i) + { + this.Canvas.lineTo(aryFrist[i].x, aryFrist[i].y); + } + this.Canvas.lineTo(aryFrist[aryFrist.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.FirstColor; + this.Canvas.fill(); + + this.Canvas.beginPath(); + this.Canvas.moveTo(arySecond[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < arySecond.length; ++i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.lineTo(arySecond[arySecond.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.SecondColor; + this.Canvas.fill(); + + this.Canvas.restore(); + } + + this.GetMaxMin=function() { var xPointCount=this.ChartFrame.XPointCount; @@ -29333,6 +29357,11 @@ function KLineChartContainer(uielement) { apiItem=obj.API; } + else if (obj.Script) //动态执行脚本 + { + indexInfo={ Script:obj.Script, ID:obj.indexName, Name:obj.indexName}; + if (obj.Name) indexInfo.Name=obj.Name; + } else { let scriptData = new JSIndexScript(); @@ -29376,13 +29405,7 @@ function KLineChartContainer(uielement) } else if (indexInfo) { - let indexData = - { - Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName , - //扩展属性 可以是空 - KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale, - FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition, - }; + let indexData = indexInfo; if (obj.Args) indexData.Args=obj.Args; //外部可以设置参数 var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行 diff --git a/vuehqchart/src/jscommon/umychart.vue/umychart.vue.js b/vuehqchart/src/jscommon/umychart.vue/umychart.vue.js index 1b8d507a22d61bcfd445f13e59af912b02ea364e..ac9f41fabcc8adaca949d3cbc81d2ab8f8ef4381 100644 --- a/vuehqchart/src/jscommon/umychart.vue/umychart.vue.js +++ b/vuehqchart/src/jscommon/umychart.vue/umychart.vue.js @@ -4128,9 +4128,11 @@ function JSChart(divElement) { var item=option.OverlayIndex[i]; if (item.Windows>=chart.Frame.SubFrame.length) continue; - var obj={ WindowIndex:item.Windows,IndexName: item.Index, ShowRightText:item.ShowRightText }; - if (item.Args) obj.Args=item.Args; - if (item.API) obj.API=item.API; + + var itemString = JSON.stringify(item); + var obj = JSON.parse(itemString); + if (item.Index) obj.IndexName=item.Index; + if (item.Windows>=0) obj.WindowIndex=item.Windows; chart.CreateOverlayWindowsIndex(obj); } @@ -7532,6 +7534,14 @@ function JSChartContainer(uielement) if (IFrameSplitOperator.IsBool(option.IsLockScreen)) this.ChartDrawOption.IsLockScreen=option.IsLockScreen; if (IFrameSplitOperator.IsNumber(option.Zoom) && option.Zoom>=0) this.ChartDrawOption.Zoom=option.Zoom; } + + //是否显示十字光标的十字线 + this.EnableShowCorssCursorLine=function(bShow) + { + if (!this.ChartCorssCursor) return; + + this.ChartCorssCursor.IsShowCorss=bShow; + } } function GetDevicePixelRatio() @@ -18023,58 +18033,72 @@ function ChartBand() var y2 = 0; var firstlinePoints = []; var secondlinePoints = []; - var lIndex = 0; - for(var i=this.Data.DataOffset,j=0;i 1) - { - this.Canvas.save(); - this.Canvas.beginPath(); - for (var i = 0; i < firstlinePoints.length; ++i) + firstlinePoints = []; + secondlinePoints = []; + for(;i= 0; --j) - { - this.Canvas.lineTo(secondlinePoints[j].x, secondlinePoints[j].y); - } - this.Canvas.closePath(); - this.Canvas.clip(); - this.Canvas.beginPath(); - this.Canvas.moveTo(firstlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < firstlinePoints.length; ++i) - { - this.Canvas.lineTo(firstlinePoints[i].x, firstlinePoints[i].y); + var value=this.Data.Data[i]; + if (value==null || value.Value==null || value.Value2 == null) break; + x=this.ChartFrame.GetXFromIndex(j); + y=this.ChartFrame.GetYFromData(value.Value); + y2 = this.ChartFrame.GetYFromData(value.Value2); + firstlinePoints.push({x:x,y:y}); + secondlinePoints.push({x:x,y:y2}); } - this.Canvas.lineTo(firstlinePoints[firstlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.FirstColor; - this.Canvas.fill(); - this.Canvas.beginPath(); - this.Canvas.moveTo(secondlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < secondlinePoints.length; ++i) + + if (firstlinePoints.length>1 && secondlinePoints.length>1) { - this.Canvas.lineTo(secondlinePoints[i].x, secondlinePoints[i].y); + this.DrawBand(firstlinePoints, secondlinePoints); } - this.Canvas.lineTo(secondlinePoints[secondlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.SecondColor; - this.Canvas.fill(); - this.Canvas.restore(); } } + + this.DrawBand=function(aryFrist, arySecond) + { + this.Canvas.save(); + this.Canvas.beginPath(); + for(var i=0;i= 0; --i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.closePath(); + this.Canvas.clip(); + + this.Canvas.moveTo(aryFrist[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < aryFrist.length; ++i) + { + this.Canvas.lineTo(aryFrist[i].x, aryFrist[i].y); + } + this.Canvas.lineTo(aryFrist[aryFrist.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.FirstColor; + this.Canvas.fill(); + + this.Canvas.beginPath(); + this.Canvas.moveTo(arySecond[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < arySecond.length; ++i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.lineTo(arySecond[arySecond.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.SecondColor; + this.Canvas.fill(); + + this.Canvas.restore(); + } + + this.GetMaxMin=function() { var xPointCount=this.ChartFrame.XPointCount; @@ -33064,6 +33088,11 @@ function KLineChartContainer(uielement) { apiItem=obj.API; } + else if (obj.Script) //动态执行脚本 + { + indexInfo={ Script:obj.Script, ID:obj.indexName, Name:obj.indexName}; + if (obj.Name) indexInfo.Name=obj.Name; + } else { let scriptData = new JSIndexScript(); @@ -33107,13 +33136,7 @@ function KLineChartContainer(uielement) } else if (indexInfo) { - let indexData = - { - Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName , - //扩展属性 可以是空 - KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale, - FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition, - }; + let indexData = indexInfo; if (obj.Args) indexData.Args=obj.Args; //外部可以设置参数 var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行 diff --git a/webhqchart.demo/jscommon/umychart.js b/webhqchart.demo/jscommon/umychart.js index d980693648fc5850fb353132a54bc686acaec5bc..b998910f7386e11cb1fea48d1bdbb3bd36256804 100644 --- a/webhqchart.demo/jscommon/umychart.js +++ b/webhqchart.demo/jscommon/umychart.js @@ -397,9 +397,11 @@ function JSChart(divElement) { var item=option.OverlayIndex[i]; if (item.Windows>=chart.Frame.SubFrame.length) continue; - var obj={ WindowIndex:item.Windows,IndexName: item.Index, ShowRightText:item.ShowRightText }; - if (item.Args) obj.Args=item.Args; - if (item.API) obj.API=item.API; + + var itemString = JSON.stringify(item); + var obj = JSON.parse(itemString); + if (item.Index) obj.IndexName=item.Index; + if (item.Windows>=0) obj.WindowIndex=item.Windows; chart.CreateOverlayWindowsIndex(obj); } @@ -3801,6 +3803,14 @@ function JSChartContainer(uielement) if (IFrameSplitOperator.IsBool(option.IsLockScreen)) this.ChartDrawOption.IsLockScreen=option.IsLockScreen; if (IFrameSplitOperator.IsNumber(option.Zoom) && option.Zoom>=0) this.ChartDrawOption.Zoom=option.Zoom; } + + //是否显示十字光标的十字线 + this.EnableShowCorssCursorLine=function(bShow) + { + if (!this.ChartCorssCursor) return; + + this.ChartCorssCursor.IsShowCorss=bShow; + } } function GetDevicePixelRatio() @@ -14292,58 +14302,72 @@ function ChartBand() var y2 = 0; var firstlinePoints = []; var secondlinePoints = []; - var lIndex = 0; - for(var i=this.Data.DataOffset,j=0;i 1) + for(var i=this.Data.DataOffset,j=0; i= 0; --j) - { - this.Canvas.lineTo(secondlinePoints[j].x, secondlinePoints[j].y); - } - this.Canvas.closePath(); - this.Canvas.clip(); - this.Canvas.beginPath(); - this.Canvas.moveTo(firstlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < firstlinePoints.length; ++i) + firstlinePoints = []; + secondlinePoints = []; + for(;i1 && secondlinePoints.length>1) { - this.Canvas.lineTo(secondlinePoints[i].x, secondlinePoints[i].y); + this.DrawBand(firstlinePoints, secondlinePoints); } - this.Canvas.lineTo(secondlinePoints[secondlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.SecondColor; - this.Canvas.fill(); - this.Canvas.restore(); } } + + this.DrawBand=function(aryFrist, arySecond) + { + this.Canvas.save(); + this.Canvas.beginPath(); + for(var i=0;i= 0; --i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.closePath(); + this.Canvas.clip(); + + this.Canvas.moveTo(aryFrist[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < aryFrist.length; ++i) + { + this.Canvas.lineTo(aryFrist[i].x, aryFrist[i].y); + } + this.Canvas.lineTo(aryFrist[aryFrist.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.FirstColor; + this.Canvas.fill(); + + this.Canvas.beginPath(); + this.Canvas.moveTo(arySecond[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < arySecond.length; ++i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.lineTo(arySecond[arySecond.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.SecondColor; + this.Canvas.fill(); + + this.Canvas.restore(); + } + + this.GetMaxMin=function() { var xPointCount=this.ChartFrame.XPointCount; @@ -29333,6 +29357,11 @@ function KLineChartContainer(uielement) { apiItem=obj.API; } + else if (obj.Script) //动态执行脚本 + { + indexInfo={ Script:obj.Script, ID:obj.indexName, Name:obj.indexName}; + if (obj.Name) indexInfo.Name=obj.Name; + } else { let scriptData = new JSIndexScript(); @@ -29376,13 +29405,7 @@ function KLineChartContainer(uielement) } else if (indexInfo) { - let indexData = - { - Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName , - //扩展属性 可以是空 - KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale, - FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition, - }; + let indexData = indexInfo; if (obj.Args) indexData.Args=obj.Args; //外部可以设置参数 var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行 diff --git a/webhqchart/umychart.js b/webhqchart/umychart.js index d980693648fc5850fb353132a54bc686acaec5bc..b998910f7386e11cb1fea48d1bdbb3bd36256804 100644 --- a/webhqchart/umychart.js +++ b/webhqchart/umychart.js @@ -397,9 +397,11 @@ function JSChart(divElement) { var item=option.OverlayIndex[i]; if (item.Windows>=chart.Frame.SubFrame.length) continue; - var obj={ WindowIndex:item.Windows,IndexName: item.Index, ShowRightText:item.ShowRightText }; - if (item.Args) obj.Args=item.Args; - if (item.API) obj.API=item.API; + + var itemString = JSON.stringify(item); + var obj = JSON.parse(itemString); + if (item.Index) obj.IndexName=item.Index; + if (item.Windows>=0) obj.WindowIndex=item.Windows; chart.CreateOverlayWindowsIndex(obj); } @@ -3801,6 +3803,14 @@ function JSChartContainer(uielement) if (IFrameSplitOperator.IsBool(option.IsLockScreen)) this.ChartDrawOption.IsLockScreen=option.IsLockScreen; if (IFrameSplitOperator.IsNumber(option.Zoom) && option.Zoom>=0) this.ChartDrawOption.Zoom=option.Zoom; } + + //是否显示十字光标的十字线 + this.EnableShowCorssCursorLine=function(bShow) + { + if (!this.ChartCorssCursor) return; + + this.ChartCorssCursor.IsShowCorss=bShow; + } } function GetDevicePixelRatio() @@ -14292,58 +14302,72 @@ function ChartBand() var y2 = 0; var firstlinePoints = []; var secondlinePoints = []; - var lIndex = 0; - for(var i=this.Data.DataOffset,j=0;i 1) + for(var i=this.Data.DataOffset,j=0; i= 0; --j) - { - this.Canvas.lineTo(secondlinePoints[j].x, secondlinePoints[j].y); - } - this.Canvas.closePath(); - this.Canvas.clip(); - this.Canvas.beginPath(); - this.Canvas.moveTo(firstlinePoints[0].x, this.ChartBorder.GetBottom()); - for (var i = 0; i < firstlinePoints.length; ++i) + firstlinePoints = []; + secondlinePoints = []; + for(;i1 && secondlinePoints.length>1) { - this.Canvas.lineTo(secondlinePoints[i].x, secondlinePoints[i].y); + this.DrawBand(firstlinePoints, secondlinePoints); } - this.Canvas.lineTo(secondlinePoints[secondlinePoints.length-1].x, this.ChartBorder.GetBottom()); - this.Canvas.closePath(); - this.Canvas.fillStyle = this.SecondColor; - this.Canvas.fill(); - this.Canvas.restore(); } } + + this.DrawBand=function(aryFrist, arySecond) + { + this.Canvas.save(); + this.Canvas.beginPath(); + for(var i=0;i= 0; --i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.closePath(); + this.Canvas.clip(); + + this.Canvas.moveTo(aryFrist[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < aryFrist.length; ++i) + { + this.Canvas.lineTo(aryFrist[i].x, aryFrist[i].y); + } + this.Canvas.lineTo(aryFrist[aryFrist.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.FirstColor; + this.Canvas.fill(); + + this.Canvas.beginPath(); + this.Canvas.moveTo(arySecond[0].x, this.ChartBorder.GetBottom()); + for (var i = 0; i < arySecond.length; ++i) + { + this.Canvas.lineTo(arySecond[i].x, arySecond[i].y); + } + this.Canvas.lineTo(arySecond[arySecond.length-1].x, this.ChartBorder.GetBottom()); + this.Canvas.closePath(); + this.Canvas.fillStyle = this.SecondColor; + this.Canvas.fill(); + + this.Canvas.restore(); + } + + this.GetMaxMin=function() { var xPointCount=this.ChartFrame.XPointCount; @@ -29333,6 +29357,11 @@ function KLineChartContainer(uielement) { apiItem=obj.API; } + else if (obj.Script) //动态执行脚本 + { + indexInfo={ Script:obj.Script, ID:obj.indexName, Name:obj.indexName}; + if (obj.Name) indexInfo.Name=obj.Name; + } else { let scriptData = new JSIndexScript(); @@ -29376,13 +29405,7 @@ function KLineChartContainer(uielement) } else if (indexInfo) { - let indexData = - { - Name:indexInfo.Name, Script:indexInfo.Script, Args: indexInfo.Args, ID:indexName , - //扩展属性 可以是空 - KLineType:indexInfo.KLineType, YSpecificMaxMin:indexInfo.YSpecificMaxMin, YSplitScale:indexInfo.YSplitScale, - FloatPrecision:indexInfo.FloatPrecision, Condition:indexInfo.Condition, - }; + let indexData = indexInfo; if (obj.Args) indexData.Args=obj.Args; //外部可以设置参数 var scriptIndex=new OverlayScriptIndex(indexData.Name,indexData.Script,indexData.Args,indexData); //脚本执行