Commit 9ee4703d authored by Igor.Zotov's avatar Igor.Zotov Committed by Alexander.Trofimov

корректировка отрисовки текста внутри диаграммы

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47499 954022d7-b5bf-4e40-9824-e11837661b57
parent 0daa352e
......@@ -380,63 +380,6 @@ function calcGutter(axis,min,max,ymin,ymax,isSkip,isFormatCell) {
if ('scatter' == bar.type) {
bar.scale = OfficeExcel.getScale(false, bar,min,max,ymin,ymax);
bar.xScale = OfficeExcel.getScale(true, bar,min,max,ymin,ymax);
if (bar._otherProps._ymax > 0 && bar._otherProps._ymin < 0) {
bar._chartGutter._bottom = 14;
bar._chartGutter._top = 14;
}
else if (bar._otherProps._ymax <= 0 && bar._otherProps._ymin < 0) {
bar._chartGutter._bottom = 14;
bar._chartGutter._top = 14;
}
else {
bar._chartGutter._bottom = 14 + 20;
bar._chartGutter._top = 14;
}
if (bar._otherProps._xmax > 0 && bar._otherProps._xmin < 0) {
bar._chartGutter._left = 22;
bar._chartGutter._right = 93;
}
else if (bar._otherProps._xmax <= 0 && bar._otherProps._xmin < 0) {
bar._chartGutter._left = 22;
bar._chartGutter._right = 93;
}
else {
bar._chartGutter._left = bar.context.measureText(Math.max.apply(null, bar.scale)).width + 22;
bar._chartGutter._right = 93;
}
}
else if ('hbar' == bar.type || 'bar' == bar.type) {
if ('hbar' == bar.type)
bar._chartGutter._left = bar.context.measureText(Math.max.apply(null, [bar.data.length])).width + 20;
else
bar._chartGutter._left = bar.context.measureText(Math.max.apply(null, scale)).width + 20;
bar._chartGutter._right = 72;
bar._chartGutter._bottom = 35;
bar._chartGutter._top = 14;
}
else {
if (axis == undefined) {
bar._chartGutter._left = bar.context.measureText(Math.max.apply(null, scale)).width + 18;
if (bar._otherProps._filled == true)
bar._chartGutter._right = 76;
else
bar._chartGutter._right = 90;
if (min < 0 && max < 0 || min < 0 && max > 0)
bar._chartGutter._bottom = 13;
else
bar._chartGutter._bottom = 34;
bar._chartGutter._top = 13;
}
else if (axis == 'OX') {
if (min < 0 && max < 0 || min < 0 && max > 0)
bar._chartGutter._bottom = 13;
else
bar._chartGutter._bottom = 34;
}
else if (axis == 'OY') {
bar._chartGutter._left = bar.context.measureText(Math.max.apply(null, scale)).width + 18;
}
}
}
//ширины самих линий графика
......@@ -498,6 +441,11 @@ function calcWidthGraph() {
}
function calcAllMargin(isFormatCell,isformatCellScOy,minX,maxX,minY,maxY, chart) {
var scale = 1;
if(OfficeExcel && OfficeExcel.drawingCtxCharts)
scale = OfficeExcel.drawingCtxCharts.scaleFactor;
var context = OfficeExcel.drawingCtxCharts;
if (typeof (bar.data[0]) == 'object') {
var arrMin = [];
var arrMax = [];
......@@ -584,61 +532,82 @@ function calcAllMargin(isFormatCell,isformatCellScOy,minX,maxX,minY,maxY, chart)
var bottom = 0;
var right = 0;
var top = 0;
if (bar._otherProps._key_halign == 'left')
left += 76;
else if (bar._otherProps._key_halign == 'right')
right += 76;
else if (bar._otherProps._key_halign == 'top')
top +=32;
else if (bar._otherProps._key_halign == 'bottom')
bottom +=32;
if (bar._chartTitle._text != null && bar._chartTitle._text != '')
top += 42;
}
else
{
if (bar._otherProps._key_halign == 'left')
left += 76;
if (bar._yAxisTitle._align == 'rev')
left += 28;
{
var font = getFontProperties("yTitle");
var axisTitleProp = getMaxPropertiesText(context,font, bar._yAxisTitle._text);
var heigthText = (context.getHeightText()/0.75);
//прибавляем высоту текста названия + стандартный маргин
left += heigthText + 12;
}
else if (bar._yAxisTitle._align == 'hor')
left += 95;
else if (bar._yAxisTitle._align == 'ver')
left += 0;
var right = 0;
if (bar._otherProps._key_halign == 'right')
right += 76;
var top = 0;
if (bar._otherProps._key_halign == 'top')
top += 32;
if (bar._chartTitle._text != null && bar._chartTitle._text != '')
top += 42;
var bottom = 0;
if (bar._otherProps._key_halign == 'bottom')
bottom += 32;
if (bar._xAxisTitle._text != '')
{
bottom += 20;
var font = getFontProperties("xTitle");
var axisTitleProp = getMaxPropertiesText(context,font, bar._xAxisTitle._text);
var heigthText = (context.getHeightText()/0.75);
//прибавляем высоту текста названия + стандартный маргин
bottom += heigthText + 14;
}
if ((min >= 0 || bar.type == 'hbar') && bar._otherProps._xlabels)
{
bottom +=20;
}
if(bar._xAxisTitle._text != '' && (min >= 0 || bar.type == 'hbar') && bar._otherProps._xlabels)
if(bar._xAxisTitle._text == '' && (min >= 0 || bar.type == 'hbar') && bar._otherProps._xlabels)
bottom += 7;
}
var scale = 1;
if(OfficeExcel && OfficeExcel.drawingCtxCharts)
scale = OfficeExcel.drawingCtxCharts.scaleFactor;
bar._chartGutter._left = (standartMargin + left)*scale;
//+высота названия диаграммы
if (bar._chartTitle._text != null && bar._chartTitle._text != '')
{
var font = getFontProperties("title");
var axisTitleProp = getMaxPropertiesText(context,font, bar._chartTitle._text);
var heigthText = (context.getHeightText()/0.75);
//прибавляем высоту текста названия + стандартный маргин
top += heigthText + 7;
}
//+ высота легенды
if(bar._otherProps._key_halign == 'top' || bar._otherProps._key_halign == 'bottom')
{
var font = getFontProperties("key");
var props = getMaxPropertiesText(context,font,bar._otherProps._key);
var heigthTextKey = (context.getHeightText()/0.75);
if(bar._otherProps._key_halign == 'top')
top += heigthTextKey + 7;
else
bottom += heigthTextKey + 7;
}
//+ ширина легенды
if (bar._otherProps._key_halign == 'left' || bar._otherProps._key_halign == 'right')
{
var widthLine = 28;
//находим ширину текста легенды(то есть её максимального элемента), в дальнейшем будем возвращать ширину автофигуры
var font = getFontProperties("key");
var widthText = getMaxPropertiesText(context,font,bar._otherProps._key);
var widthKey = widthText.width/scale + 2 + widthLine;
//в MSExcel справа от легенды всегда остаётся такой маргин
if(bar._otherProps._key_halign == 'left')
left += widthKey + 7;
else
right += widthKey + 7;
}
if(bottom == 0)
bottom = standartMargin;
bar._chartGutter._left = (left)*scale + standartMargin;
bar._chartGutter._right = (standartMargin + right)*scale;
bar._chartGutter._top = (standartMargin + top)*scale;
bar._chartGutter._bottom = (bottom + standartMargin)*scale;
bar._chartGutter._bottom = (bottom)*scale;
}
//-----------------------------------------------------------------------------------
......@@ -1511,8 +1480,6 @@ function drawChart(chart, arrValues, width, height) {
var axis;
calcGutter(axis,chart.min,chart.max,chart.ymin,chart.ymax,chart.isSkip,chart.isFormatCell);
calcAllMargin(chart.isFormatCell,chart.isformatCellScOy,chart.min,chart.max,chart.ymin,chart.ymax, chart);
calcWidthGraph();
if (chart.xAxis.title)
{
......@@ -1527,6 +1494,8 @@ function drawChart(chart, arrValues, width, height) {
}
//выставляем параметры текса
setFontChart(chart);
calcAllMargin(chart.isFormatCell,chart.isformatCellScOy,chart.min,chart.max,chart.ymin,chart.ymax, chart);
calcWidthGraph();
bar.Draw(chart.min,chart.max,chart.ymin,chart.ymax,chart.isSkip,chart.isFormatCell,chart.isformatCellScOy);
}
......@@ -1656,8 +1625,6 @@ function DrawScatterChart(chartCanvas, chartSubType, data, chart) {
bar._otherProps._xmax = countGraph.length;
bar._otherProps._key_colors = keyColors;
}
calcGutter(undefined,chart.min,chart.max,chart.ymin,chart.ymax,chart.isSkip,chart.isFormatCell);
//для того, чтобы не строить рамку вокруг легенды
bar._otherProps._key_rounded = null;
if (bar._otherProps._filled != true)
......@@ -1972,7 +1939,7 @@ function setFontChart(chart)
bar._xAxisTitle._bold = chart.xAxis.titleFont.bold ? chart.xAxis.titleFont.bold : true;
bar._xAxisTitle._color = chart.xAxis.titleFont.color ? chart.xAxis.titleFont.color : defaultColor;
bar._xAxisTitle._font = chart.xAxis.titleFont.name ? chart.xAxis.titleFont.name : defaultFont;
bar._xAxisTitle._size = chart.xAxis.titleFont.size ? chart.xAxis.titleFont.size : defaultSize;
bar._xAxisTitle._size = chart.xAxis.titleFont.size ? chart.xAxis.titleFont.size : defaultFont;
bar._xAxisTitle._italic = chart.xAxis.titleFont.italic ? chart.xAxis.titleFont.italic : false;
bar._xAxisTitle._underline = chart.xAxis.titleFont.underline ? chart.xAxis.titleFont.underline : false;
}
......@@ -1982,7 +1949,7 @@ function setFontChart(chart)
bar._yAxisTitle._bold = chart.yAxis.titleFont.bold ? chart.yAxis.titleFont.bold : true;
bar._yAxisTitle._color = chart.yAxis.titleFont.color ? chart.yAxis.titleFont.color : defaultColor;
bar._yAxisTitle._font = chart.yAxis.titleFont.name ? chart.yAxis.titleFont.name : defaultFont;
bar._yAxisTitle._size = chart.yAxis.titleFont.size ? chart.yAxis.titleFont.size : defaultSize;
bar._yAxisTitle._size = chart.yAxis.titleFont.size ? chart.yAxis.titleFont.size : defaultFont;
bar._yAxisTitle._italic = chart.yAxis.titleFont.italic ? chart.yAxis.titleFont.italic : false;
bar._yAxisTitle._underline = chart.yAxis.titleFont.underline ? chart.yAxis.titleFont.underline : false;
}
......@@ -1992,7 +1959,7 @@ function setFontChart(chart)
bar._otherProps._key_text_bold = chart.legend.font.bold ? chart.legend.font.bold : false;
bar._otherProps._key_text_color = chart.legend.font.color ? chart.legend.font.color : defaultColor;
bar._otherProps._key_text_font = chart.legend.font.name ? chart.legend.font.name : defaultFont;
bar._otherProps._key_text_size = chart.legend.font.size ? chart.legend.font.size : 10;
bar._otherProps._key_text_size = chart.legend.font.size ? chart.legend.font.size : defaultFont;
bar._otherProps._key_text_italic = chart.legend.font.italic ? chart.legend.font.italic : false;
bar._otherProps._key_text_underline = chart.legend.font.underline ? chart.legend.font.underline : false;
}
......@@ -2037,3 +2004,230 @@ function setFontChart(chart)
bar._otherProps._text_size = defaultSize;
}
}
function getFontProperties(type)
{
var props = bar._otherProps;
var xAxisTitle = bar._xAxisTitle;
var yAxisTitle = bar._yAxisTitle;
var chartTitle = bar._chartTitle;
switch (type) {
case "xLabels":
{
return new Asc.FontProperties(props._xlabels_font,props._xlabels_size,props._xlabels_bold, props._xlabels_italic, props._xlabels_underline);
}
case "yLabels":
{
return new Asc.FontProperties(props._ylabels_font, props._ylabels_size, props._ylabels_bold, props._ylabels_italic, props._ylabels_underline);
}
case "xTitle":
{
return new Asc.FontProperties(xAxisTitle._font, xAxisTitle._size, xAxisTitle._bold, xAxisTitle._italic, xAxisTitle._underline);
}
case "yTitle":
{
return new Asc.FontProperties(yAxisTitle._font, yAxisTitle._size, yAxisTitle._bold, yAxisTitle._italic, yAxisTitle._underline);
}
case "key":
{
return new Asc.FontProperties(props._key_text_font,props._key_text_size,props._key_text_bold, props._key_text_italic, props._key_text_underline);
}
case "title":
{
return new Asc.FontProperties(chartTitle._font, chartTitle._size, chartTitle._bold, chartTitle._italic, chartTitle._underline);
}
case "labelsAbove":
{
return new Asc.FontProperties(props._ylabels_labels_above_labels_above_font, props._labels_above_size, props._labels_above_bold, props._labels_above_italic, props._labels_above_underline);
}
}
}
function calculatePosiitionObjects(type)
{
var context = OfficeExcel.drawingCtxCharts;
if(!context || !context.scaleFactor)
return false;
var scale = context.scaleFactor;
switch (type) {
case "xLabels":
{
//возвращаем только координату y, поскольку она зависит от величины маргина
var marginBottom = bar._chartGutter._bottom;
var ascFontXLabels = getFontProperties("xLabels");
context.setFont(ascFontXLabels);
var heigthTextLabelsOx = context.measureText((bar._otherProps._labels[0]).toString(),1);
//если имеется название оси
var heigthTextNameAxisOx = 0;
if(bar._xAxisTitle._vpos)
{
var ascFontXTitle = getFontProperties("xTitle");
context.setFont(ascFontXTitle);
//в дальнейшем коэффициэнт нужно убрать и вместо него должна быть высота автофигуры с текстом
var koff = 12*scale;
heigthTextNameAxisOx = 10 + context.measureText((bar._xAxisTitle._text).toString(),1).height + koff;
}
//отступ от оси до подписи значений
marginOx = (marginBottom - (heigthTextLabelsOx.height + heigthTextNameAxisOx))/2;
return marginOx;
}
case "yLabels":
{
//возвращаем только координату x
var marginLeft = bar._chartGutter._left;
var ascFontXLabels = getFontProperties("xLabels");
context.setFont(ascFontXLabels);
var propsTextLabelsOy = getMaxPropertiesText(context,ascFontXLabels,bar._otherProps._labels);
var marginOy = bar._chartGutter._left - (12*scale);
return marginOy;
}
case "key_hpos":
{
if(bar._otherProps._key_halign == 'right')
{
if(bar._otherProps._key_color_shape == 'line')
{
var widthLine = 28;
//находим ширину текста легенды(то есть её максимального элемента), в дальнейшем будем возвращать ширину автофигуры
var font = getFontProperties("key");
var widthText = getMaxPropertiesText(context,font,bar._otherProps._key);
var widthKey = widthText.width + 2*scale + widthLine*scale;
//в MSExcel справа от легенды всегда остаётся такой маргин
var marginRightFromKey = 12*scale;
var hpos = bar.canvas.width - widthKey - marginRightFromKey;
return hpos;
}
else
{
var widthLine = 8;
//находим ширину текста легенды(то есть её максимального элемента), в дальнейшем будем возвращать ширину автофигуры
var font = getFontProperties("key");
var widthText = getMaxPropertiesText(context,font,bar._otherProps._key);
var widthKey = widthText.width + 5 + widthLine;
//в MSExcel справа от легенды всегда остаётся такой маргин
var marginRightFromKey = 12*scale;
var hpos = bar.canvas.width - widthKey - marginRightFromKey;
return hpos;
}
}
else if(bar._otherProps._key_halign == 'left')
{
//слева от легенды всегда расстояние 12px
return 12*scale;
}
else if(bar._otherProps._key_halign == 'bottom')
{
return bar.canvas.height - 7*scale;
}
else if(bar._otherProps._key_halign == 'top')
{
var font = getFontProperties("key");
var props = getMaxPropertiesText(context,font,bar._otherProps._key);
var heigthTextKey = (context.getHeightText()/0.75)*scale;
if(typeof(bar._chartTitle._text) == 'string' && bar._chartTitle._text != '')
{
var font = getFontProperties("title");
var axisTitleProp = getMaxPropertiesText(context,font, bar._chartTitle._text);
var hpos = (bar.canvas.width)/2 - axisTitleProp.width/2;
var heigthText = (context.getHeightText()/0.75)*scale;
return 7*scale + heigthTextKey + 7*scale + heigthText;
}
else
{
return 7*scale + heigthTextKey;
}
}
}
case "yAxisTitle":
{
// ***по дефолту в ms office отступ от левого края(или от легенды) 12px
var hpos;
var font = getFontProperties("yTitle");
var axisTitleProp = getMaxPropertiesText(context,font, bar._yAxisTitle._text);
var vpos = (bar.canvas.height - bar._chartGutter._bottom - bar._chartGutter._top)/2 + axisTitleProp.width/2 + bar._chartGutter._top;
var heigthText = (context.getHeightText()/0.75)*scale;
if(bar._otherProps._key_halign == 'left')
{
var widthLine = 8;
var diff = 5;
if(bar._otherProps._key_color_shape == 'line')
{
widthLine = 28;
diff = 2;
}
//находим ширину текста легенды(то есть её максимального элемента), в дальнейшем будем возвращать ширину автофигуры
var font = getFontProperties("key");
var widthText = getMaxPropertiesText(context,font,bar._otherProps._key);
var widthKey = widthText.width + diff*scale + widthLine*scale;
//складываем стандартный маргин от легенды + маргин от названия + ширину легенды + высоту текста названия
hpos = heigthText + widthKey + 6*scale + 12*scale;
return {x: hpos,y: vpos}
}
else
{
hpos = heigthText + 12*scale;
return {x: hpos,y: vpos}
}
}
case "xAxisTitle":
{
// ***по дефолту в ms office отступ от нижнего края(или от легенды) 14px
var hpos;
var font = getFontProperties("xTitle");
var axisTitleProp = getMaxPropertiesText(context,font, bar._xAxisTitle._text);
var hpos = (bar.canvas.width - bar._chartGutter._left - bar._chartGutter._right)/2 - axisTitleProp.width/2 + bar._chartGutter._left;
var heigthText = (context.getHeightText()/0.75)*scale;
var ascenderText = (context.getAscenderText()/0.75)*scale;
if(bar._otherProps._key_halign == 'bottom')
{
var font = getFontProperties("key");
var heightText = getMaxPropertiesText(context,font,bar._otherProps._key);
var heightKey = (context.getHeightText()/0.75)*scale;
//складываем стандартный маргин от легенды + маргин от названия + ширину легенды + высоту текста названия
vpos = bar.canvas.height - 14*scale - 7*scale - heightKey;
return {x: hpos,y: vpos}
}
else
{
vpos = bar.canvas.height - 14*scale;
return {x: hpos,y: vpos}
}
}
case "title":
{
// ***по дефолту в ms office отступ от верхнего края(или от легенды) 7px
var hpos;
var font = getFontProperties("title");
var axisTitleProp = getMaxPropertiesText(context,font, bar._chartTitle._text);
var hpos = (bar.canvas.width)/2 - axisTitleProp.width/2;
var heigthText = (context.getHeightText()/0.75)*scale;
vpos = 7*scale + heigthText;
return {x: hpos,y: vpos}
}
}
}
function getMaxPropertiesText(context, font, text)
{
context.setFont(font);
var result;
if(typeof text == "object")
{
// в данном случае ищем максимальную ширину текста
var maxLength = 0;
var maxWord;
for(var i = 0; i < text.length; i++)
{
var lengthText = text[i].toString().length;
if(lengthText > maxLength)
{
maxLength = lengthText;
maxWord = text[i].toString();
}
}
result = context.measureText(maxWord,0);
}
else
{
result = context.measureText((text).toString(),0);
}
return result;
}
......@@ -1743,10 +1743,10 @@
OfficeExcel.drawTurnedText = function(drawingCtx,textOptions, text, angle)
{
var cx = textOptions.x; // center offset x
var cy = textOptions.y; // center offset y
var textWidth = textOptions.width; // NOTE: measure text (width * 0.5)
var textHeight = textOptions.height; // NOTE: measure text (height * 0.5)
var cx = textOptions.x;
var cy = textOptions.y;
var textWidth = 0;
var textHeight = 0;
var font = textOptions.font;
var size = textOptions.size;
var asc = Asc;
......@@ -1966,7 +1966,10 @@
*/
OfficeExcel.DrawTitle = function (canvas, text, gutterTop)
{
var obj = canvas.__object__;
if(obj._chartTitle._text == '')
return;
var context = canvas.getContext('2d');
var gutterLeft = obj._chartGutter._left;
var gutterRight = obj._chartGutter._right;
......@@ -2050,7 +2053,13 @@
vpos = obj._chartTitle._vpos;
vCenter = 'bottom';
}
OfficeExcel.Text(context, font, size, centerx, vpos, text, vCenter, 'center', bgcolor != null, null, bgcolor, bold, null, textOptions);
var props = calculatePosiitionObjects("title");
if(props)
{
centerx = props.x;
vpos = props.y;
}
OfficeExcel.Text(context, font, size, centerx, vpos, text, null, null, bgcolor != null, null, bgcolor, bold, null, textOptions);
// Reset the fill colour
context.fillStyle = oldColor;
......@@ -2302,6 +2311,9 @@
vpos = obj._xAxisTitle._vpos
if (obj._xAxisTitle._hpos != 'null')
hpos = obj._xAxisTitle._hpos
var props = calculatePosiitionObjects("xAxisTitle");
hpos = props.x;
vpos = props.y;
context.beginPath();
OfficeExcel.Text(context,
font,
......@@ -2309,8 +2321,8 @@
hpos,
vpos,
obj._xAxisTitle._text,
'center',
'center',
null,
null,
false,
false,
false,
......@@ -2355,6 +2367,7 @@
obj.canvas.width - obj._chartGutter._right + obj._otherProps._text_size + 5;
} else
hpos = hpos;
if(obj._yAxisTitle._angle != 'null' && obj._yAxisTitle._angle != undefined)
angle = obj._yAxisTitle._angle;
if (obj._yAxisTitle._vpos != 'null')
......@@ -2362,6 +2375,10 @@
if (obj._yAxisTitle._hpos != 'null')
hpos = obj._yAxisTitle._hpos;
var props = calculatePosiitionObjects("yAxisTitle");
hpos = props.x;
vpos = props.y;
context.beginPath();
OfficeExcel.Text(context,
font,
......@@ -2370,7 +2387,7 @@
vpos,
obj._yAxisTitle._text,
'center',
'right',//change with center
null,//change with center
false,
angle,
false,
......@@ -2509,7 +2526,7 @@
}
// Draw the title if one is set
if ( typeof(obj._chartTitle._text) == 'string') {
if ( typeof(obj._chartTitle._text) == 'string' && obj._chartTitle._text != '') {
if (obj.type == 'gantt') {
gutterTop -= 10;
......
......@@ -79,8 +79,13 @@
var strokestyle = '#333';
var height = 0;
var width = 0;
var scale = 1;
if(OfficeExcel.drawingCtxCharts && OfficeExcel.drawingCtxCharts.scaleFactor)
scale = OfficeExcel.drawingCtxCharts.scaleFactor;
var sizeLine = 26*scale;
if(bar._otherProps._key_color_shape != 'line')
sizeLine = 8*scale;
obj.coordsKey = [];
......@@ -120,19 +125,12 @@
/**
* Horizontal alignment
*/
/*if (typeof(obj._otherProps._key_halign) == 'string') {
if (obj._otherProps._key_halign == 'left') {
hpos = gutterLeft + 10;
} else if (obj._otherProps._key_halign == 'right') {
hpos = OfficeExcel.GetWidth(obj) - gutterRight - width;
}
}*/
var scale = 1;
if(OfficeExcel.drawingCtxCharts && OfficeExcel.drawingCtxCharts.scaleFactor)
scale = OfficeExcel.drawingCtxCharts.scaleFactor;
var widthAllKey = 70*(key.length);
if((obj._otherProps._key_halign == 'top' || obj._otherProps._key_halign == 'bottom' ))
/*if((obj._otherProps._key_halign == 'top' || obj._otherProps._key_halign == 'bottom' ))
{
if(widthAllKey > obj.canvas.width - 50)
{
......@@ -143,33 +141,52 @@
key = obj._otherProps._key;
}
widthAllKey = 70*(key.length);
}*/
var drwContext = OfficeExcel.drawingCtxCharts;
var font = getFontProperties("key");
if(obj._otherProps._key_halign == 'top' || obj._otherProps._key_halign == 'bottom' && key.length != 0)
{
widthAllKey = 0;
var widthEveryElemKey = [];
for(var l = 0; l < key.length; l++)
{
var props1 = getMaxPropertiesText(drwContext,font,key[l]);
widthAllKey += props1.width + (3)*scale + sizeLine;
widthEveryElemKey[l] = props1.width + (3)*scale + sizeLine;
}
}
var heightKeyVer = key.length*24;
heigthTextKey = 24;
if(key && key.length != 0)
{
var props = getMaxPropertiesText(drwContext,font,bar._otherProps._key);
heigthTextKey = (drwContext.getHeightText()/0.75)*scale;
}
var heightKeyVer = key.length*heigthTextKey;
var heightKey = 24;
var widthKey = textWidth*key.length + key.length*30 + 11*(key.length-1);
//var widthKeyVer = textWidth + 30;
var widthKeyVer = 31 + 30;
var widthKeyVer = 61;
//var margin = obj._chartGutter._top - 14;
if (typeof(obj._otherProps._key_halign) == 'string') {
if (obj._otherProps._key_halign == 'left') {
hpos = 20;
hpos = calculatePosiitionObjects("key_hpos");
vpos = canvas.height/2 - heightKeyVer/2;
} else if (obj._otherProps._key_halign == 'right') {
hpos = canvas.width - widthKeyVer - 10;
hpos = calculatePosiitionObjects("key_hpos");
vpos = canvas.height/2 - heightKeyVer/2;
}
else if (obj._otherProps._key_halign == 'top') {
hpos = canvas.width/2 - widthAllKey/2;
if(obj._chartTitle._text != null && obj._chartTitle._text != '')
vpos = text_size + 20 + obj._chartTitle._size + 20;
else
vpos = text_size + 20;
vpos = calculatePosiitionObjects("key_hpos");
}
else if (obj._otherProps._key_halign == 'bottom') {
hpos = canvas.width/2 - widthAllKey/2;
vpos = canvas.height - 10;
vpos = calculatePosiitionObjects("key_hpos");
}
}
......@@ -245,18 +262,16 @@
if('hbar' != obj.type)
key = OfficeExcel.array_reverse(key)
}
var horPos = false;
if(obj._otherProps._key_halign == 'bottom' || obj._otherProps._key_halign == 'top')
{
horPos = true;
//colors = OfficeExcel.array_reverse(colors)
//key = OfficeExcel.array_reverse(key)
}
if(horPos)
if(obj._otherProps._key_halign == 'bottom' || obj._otherProps._key_halign == 'top')
{
for (var i=0; i<key.length; i++) {
// Draw the blob of color
var leftDiff = 0;
for(var n = 0 ; n < i; n++)
{
leftDiff += widthEveryElemKey[n];
}
if (obj._otherProps._key_color_shape == 'circle') {
......@@ -271,14 +286,14 @@
context.strokeStyle = colors[i];
context.lineWidth = '2.7'
context.moveTo(hpos + (65 * i) + (text_size * i) ,vpos - text_size);
context.lineTo(hpos + blob_size + (65 * i) + (text_size * i) + 16, vpos - text_size);
context.moveTo(hpos + leftDiff + 2*scale,vpos - props.height/2);
context.lineTo(hpos + leftDiff + sizeLine + 2*scale, vpos - props.height/2);
context.stroke();
} else {
context.fillStyle = colors[i];
context.fillRect(hpos + blob_size + (65 * i) + (text_size * i), vpos - text_size - 10, text_size - 2, text_size + 1 - 2);
context.fillRect(hpos + leftDiff + 2*scale, vpos - 7*scale, 7*scale, 7*scale);
//context.fillRect(hpos, vpos + (10 * j) + (text_size * j) - text_size, 22, obj._otherProps._linewidth);
}
......@@ -288,8 +303,8 @@
OfficeExcel.Text(context,
text_font,
text_size,
hpos + blob_size + (65 * i) + (text_size * i) + 19,
vpos-text_size,
hpos + leftDiff + sizeLine + 3*scale,
vpos,
key[i]);
}
}
......@@ -301,7 +316,7 @@
// Draw the blob of color
var diffKeyAndLine = 3*scale;
if (obj._otherProps._key_color_shape == 'circle') {
context.beginPath();
context.strokeStyle = 'rgba(0,0,0,0)';
......@@ -314,16 +329,16 @@
context.strokeStyle = colors[i];
context.lineWidth = '2.7'
context.moveTo(hpos - 8, vpos + (15 * j) + (text_size * j) - text_size + (blob_size / 2));
context.lineTo(hpos + blob_size + 8, vpos + (15 * j) + (text_size * j) - text_size + (blob_size / 2));
context.moveTo(hpos, vpos + heigthTextKey*j - heigthTextKey + (heigthTextKey / 2));
context.lineTo(hpos + sizeLine, vpos + heigthTextKey*j - heigthTextKey + (heigthTextKey / 2));
//context.moveTo(hpos + 5, vpos + (5 * j) + (text_size * j) - text_size + (blob_size / 2));
//context.lineTo(hpos + blob_size + 5, vpos + (5 * j) + (text_size * j) - text_size + (blob_size / 2));
context.stroke();
} else {
context.fillStyle = colors[i];
context.fillRect(hpos + 5 + 2, vpos + (15 * j) + (text_size * j) - text_size, text_size - 2, text_size + 1 - 2);
//context.fillRect(hpos, vpos + (10 * j) + (text_size * j) - text_size, 22, obj._otherProps._linewidth);
context.fillRect(hpos, vpos + heigthTextKey*j - props.height/2 - 7*scale, 7*scale, 7*scale);
diffKeyAndLine = 5;
}
context.beginPath();
......@@ -333,8 +348,8 @@
OfficeExcel.Text(context,
text_font,
text_size,
hpos + blob_size + 5 + 5,
vpos + (15 * j) + (text_size * j),
hpos + sizeLine + diffKeyAndLine,
vpos + heigthTextKey*j - props.height/2,
key[i]);
}
}
......
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