Commit 2e96a8c2 authored by GoshaZotov's avatar GoshaZotov

for hbar(3d) charts

parent f6eb9f43
...@@ -2680,7 +2680,7 @@ CChartsDrawer.prototype = ...@@ -2680,7 +2680,7 @@ CChartsDrawer.prototype =
{ {
res = true; res = true;
} }
else if(isPerspective && (isBar || isLine)) else if(isPerspective && (isBar || isLine || isHBar))
{ {
res = true; res = true;
} }
...@@ -6011,11 +6011,14 @@ drawHBarChart.prototype = ...@@ -6011,11 +6011,14 @@ drawHBarChart.prototype =
DiffGapDepth = perspectiveDepth * (gapDepth / 2) / 100; DiffGapDepth = perspectiveDepth * (gapDepth / 2) / 100;
} }
for (var i = 0; i < this.chartProp.series.length; i++) { for (var i = 0; i < this.chartProp.series.length; i++)
{
numCache = this.chartProp.series[i].val.numRef ? this.chartProp.series[i].val.numRef.numCache : this.chartProp.series[i].val.numLit; numCache = this.chartProp.series[i].val.numRef ? this.chartProp.series[i].val.numRef.numCache : this.chartProp.series[i].val.numLit;
if(!numCache || this.chartProp.series[i].isHidden) if(!numCache || this.chartProp.series[i].isHidden)
{
continue; continue;
}
seria = this.chartProp.series[i].val.numRef.numCache.pts; seria = this.chartProp.series[i].val.numRef.numCache.pts;
seriesHeight[i] = []; seriesHeight[i] = [];
...@@ -6023,8 +6026,8 @@ drawHBarChart.prototype = ...@@ -6023,8 +6026,8 @@ drawHBarChart.prototype =
var isValMoreZero = false; var isValMoreZero = false;
var isValLessZero = 0; var isValLessZero = 0;
for (var j = 0; j < seria.length; j++) { for (var j = 0; j < seria.length; j++)
{
//стартовая позиция колонки Y(+ высота с учётом поправок на накопительные диаграммы) //стартовая позиция колонки Y(+ высота с учётом поправок на накопительные диаграммы)
val = parseFloat(seria[j].val); val = parseFloat(seria[j].val);
...@@ -6045,8 +6048,6 @@ drawHBarChart.prototype = ...@@ -6045,8 +6048,6 @@ drawHBarChart.prototype =
seriesHeight[i][idx] = startXColumnPosition.width; seriesHeight[i][idx] = startXColumnPosition.width;
//стартовая позиция колонки Y //стартовая позиция колонки Y
if(this.cChartSpace.chart.plotArea.catAx.scaling.orientation == ORIENTATION_MIN_MAX) if(this.cChartSpace.chart.plotArea.catAx.scaling.orientation == ORIENTATION_MIN_MAX)
{ {
...@@ -6078,17 +6079,18 @@ drawHBarChart.prototype = ...@@ -6078,17 +6079,18 @@ drawHBarChart.prototype =
else else
startY = startYPosition * this.chartProp.pxToMM + hmargin + (seriesCounter * individualBarHeight - seriesCounter * widthOverLap); startY = startYPosition * this.chartProp.pxToMM + hmargin + (seriesCounter * individualBarHeight - seriesCounter * widthOverLap);
} }
newStartY = startY; newStartY = startY;
if(this.cChartSpace.chart.plotArea.catAx.scaling.orientation != ORIENTATION_MIN_MAX) if(this.cChartSpace.chart.plotArea.catAx.scaling.orientation != ORIENTATION_MIN_MAX)
newStartY = startY + individualBarHeight; {
newStartY = startY + individualBarHeight;
}
newStartX = startX; newStartX = startX;
if(this.cChartSpace.chart.plotArea.valAx.scaling.orientation != ORIENTATION_MIN_MAX && (this.chartProp.subType == "stackedPer" || this.chartProp.subType == "stacked")) if(this.cChartSpace.chart.plotArea.valAx.scaling.orientation != ORIENTATION_MIN_MAX && (this.chartProp.subType == "stackedPer" || this.chartProp.subType == "stacked"))
{
newStartX = startX - width; newStartX = startX - width;
}
if(this.cChartDrawer.nDimensionCount === 3) if(this.cChartDrawer.nDimensionCount === 3)
{ {
...@@ -6123,19 +6125,93 @@ drawHBarChart.prototype = ...@@ -6123,19 +6125,93 @@ drawHBarChart.prototype =
//this.sortZIndexPaths.push({seria: i, point: idx, paths: paths, x: point1.x, y: point1.y, zIndex: point1.z}); //this.sortZIndexPaths.push({seria: i, point: idx, paths: paths, x: point1.x, y: point1.y, zIndex: point1.z});
//width = this.chartProp.widthCanvas - this.chartProp.chartGutter._left - this.chartProp.chartGutter._right; //width = this.chartProp.widthCanvas - this.chartProp.chartGutter._left - this.chartProp.chartGutter._right;
var controlPoint1 = this.cChartDrawer._convertAndTurnPoint(x5 + width / 2, y5 - individualBarHeight / 2, z5);
var controlPoint2 = this.cChartDrawer._convertAndTurnPoint(x5 + width / 2, y5, z5 + perspectiveDepth / 2);
//TODO delete after unused code
var calculateDistance = function(point1, point2)
{
var res = Math.sqrt(Math.pow(point2.x - point1.x , 2) + Math.pow(point2.y - point1.y , 2) + Math.pow(point2.z - point1.z , 2));
return res;
};
var getMinPoint = function(point1, point2, point3, point4)
{
var arrPoints = [point1, point2, point3, point4];
var minPoint = null;
for(var i = 0; i < arrPoints.length; i++)
{
if(null === minPoint)
{
minPoint = arrPoints[i];
}
else
{
if(arrPoints[i].z > minPoint.z)
{
minPoint = arrPoints[i];
}
}
}
return minPoint;
};
var getMidPoint = function(point1, point2, point3, point4)
{
var res = (point1.z + point2.z + point3.z ) / 3;
return res;
};
var widthScreen = this.chartProp.widthCanvas - this.chartProp.chartGutter._right;
var centralViewPoint = {x: widthScreen / 2, y: heightGraph + this.chartProp.chartGutter._bottom, z: 0};
var tempWidth = width /*< 0 ? -50 : 50*/;
var controlPoint1 = this.cChartDrawer._convertAndTurnPoint(x5 + tempWidth / 2, y5 - individualBarHeight / 2, z5);
var controlPoint2 = this.cChartDrawer._convertAndTurnPoint(x5 + tempWidth / 2, y5, z5 + perspectiveDepth / 2);
var controlPoint3 = this.cChartDrawer._convertAndTurnPoint(x5, y5 - individualBarHeight / 2, z5 + perspectiveDepth / 2); var controlPoint3 = this.cChartDrawer._convertAndTurnPoint(x5, y5 - individualBarHeight / 2, z5 + perspectiveDepth / 2);
var controlPoint4 = this.cChartDrawer._convertAndTurnPoint(x8, y8 - individualBarHeight / 2, z8 + perspectiveDepth / 2); var controlPoint4 = this.cChartDrawer._convertAndTurnPoint(x8, y8 - individualBarHeight / 2, z8 + perspectiveDepth / 2);
var controlPoint5 = this.cChartDrawer._convertAndTurnPoint(x1 + width / 2 , y1, z1 + perspectiveDepth / 2); var controlPoint5 = this.cChartDrawer._convertAndTurnPoint(x1 + tempWidth / 2 , y1, z1 + perspectiveDepth / 2);
var controlPoint6 = this.cChartDrawer._convertAndTurnPoint(x6 + width / 2 , y6 - individualBarHeight / 2, z6); var controlPoint6 = this.cChartDrawer._convertAndTurnPoint(x6 + tempWidth / 2 , y6 - individualBarHeight / 2, z6);
var distance0 = calculateDistance(centralViewPoint, controlPoint1);
var distance1 = calculateDistance(centralViewPoint, controlPoint2);
var distance2 = calculateDistance(centralViewPoint, controlPoint3);
var distance3 = calculateDistance(centralViewPoint, controlPoint4);
var distance4 = calculateDistance(centralViewPoint, controlPoint5);
var distance5 = calculateDistance(centralViewPoint, controlPoint6);
var midPoint0 = getMidPoint(point1, point4, point8, point5);
var midPoint1 = getMidPoint(point1, point2, point3, point4);
var midPoint2 = getMidPoint(point1, point2, point6, point5);
var midPoint3 = getMidPoint(point4, point8, point7, point3);
var midPoint4 = getMidPoint(point5, point6, point7, point8);
var midPoint5 = getMidPoint(point6, point2, point3, point7);
var midPaths = [midPoint0, midPoint1, midPoint2, midPoint3, midPoint4, midPoint5];
var testPoint0 = getMinPoint(point1, point4, point8, point5);
var testPoint1 = getMinPoint(point1, point2, point3, point4);
var testPoint2 = getMinPoint(point1, point2, point6, point5);
var testPoint3 = getMinPoint(point4, point8, point7, point3);
var testPoint4 = getMinPoint(point5, point6, point7, point8);
var testPoint5 = getMinPoint(point6, point2, point3, point7);
var testPaths = [testPoint0, testPoint1, testPoint2, testPoint3, testPoint4, testPoint5];
var sortPaths = [controlPoint1, controlPoint2, controlPoint3, controlPoint4, controlPoint5, controlPoint6]; var sortPaths = [controlPoint1, controlPoint2, controlPoint3, controlPoint4, controlPoint5, controlPoint6];
var distancePaths = [distance0, distance1, distance2, distance3, distance4, distance5];
for(var k = 0; k < paths.length; k++) for(var k = 0; k < paths.length; k++)
{ {
this.sortZIndexPaths.push({seria: i, point: idx, verge: k, paths: paths[k], x: sortPaths[k].x, y: sortPaths[k].y, zIndex: sortPaths[k].z}); if(null === paths[k])
continue;
var zIndex = midPaths[k];
this.sortZIndexPaths.push({seria: i, point: idx, verge: k, paths: paths[k], x: sortPaths[k].x, y: sortPaths[k].y, zIndex: zIndex});
} }
} }
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment