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); //脚本执行