| Index: polymer_0.5.4/bower_components/chartnewjs/ChartNew.js
|
| diff --git a/polymer_0.5.0/bower_components/chartnewjs/ChartNew.js b/polymer_0.5.4/bower_components/chartnewjs/ChartNew.js
|
| similarity index 98%
|
| copy from polymer_0.5.0/bower_components/chartnewjs/ChartNew.js
|
| copy to polymer_0.5.4/bower_components/chartnewjs/ChartNew.js
|
| index 66980940a1d49c2816597b4c2cabb236f966f878..3f1a87d523cb436fef6f9333476747e627355dde 100644
|
| --- a/polymer_0.5.0/bower_components/chartnewjs/ChartNew.js
|
| +++ b/polymer_0.5.4/bower_components/chartnewjs/ChartNew.js
|
| @@ -1,4 +1,4 @@
|
| -/* ²
|
| +/*
|
| * ChartNew.js
|
| *
|
| * Vancoppenolle Francois - January 2014
|
| @@ -218,7 +218,14 @@ function isNumber(n) {
|
| return !isNaN(parseFloat(n)) && isFinite(n);
|
| };
|
|
|
| -function tmplbis(str, data) {
|
| +function tmplbis(str, data,config) {
|
| + newstr=str;
|
| + if(newstr.substr(0,config.templatesOpenTag.length)==config.templatesOpenTag)newstr="<%="+newstr.substr(config.templatesOpenTag.length,newstr.length-config.templatesOpenTag.length);
|
| + if(newstr.substr(newstr.length-config.templatesCloseTag.length,config.templatesCloseTag.length)==config.templatesCloseTag)newstr=newstr.substr(0,newstr.length-config.templatesCloseTag.length)+"%>";
|
| + return tmplter(newstr,data);
|
| +}
|
| +
|
| +function tmplter(str, data) {
|
| var mathFunctionList = ["mean", "varianz", "stddev", "cv", "median"];
|
| var regexMath = new RegExp('<%=((?:(?:.*?)\\W)??)((?:' + mathFunctionList.join('|') + ')(?:Dif)?)\\(([0-9]*?)\\)(.*?)%>', 'g');
|
| while (regexMath.test(str)) {
|
| @@ -239,7 +246,7 @@ function tmplbis(str, data) {
|
| // load the template - and be sure to cache the result.
|
| // first check if it's can be an id
|
| var fn = /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(str) ? cachebis[str] = cachebis[str] ||
|
| - tmplbis(document.getElementById(str).innerHTML) :
|
| + tmplter(document.getElementById(str).innerHTML) :
|
| // Generate a reusable function that will serve as a template
|
| // generator (and which will be cached).
|
| new Function("obj",
|
| @@ -733,7 +740,7 @@ function doMouseAction(config, ctx, event, data, action, funct) {
|
| myStatData.graphPosY = canvas_pos.y;
|
| onData = true;
|
| if (action == "annotate") {
|
| - dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][12],-1,{otherVal:true}), myStatData);
|
| + dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][12],-1,{otherVal:true}), myStatData,config);
|
| annotateDIV.innerHTML = dispString;
|
| show = true;
|
| } else {
|
| @@ -755,7 +762,7 @@ function doMouseAction(config, ctx, event, data, action, funct) {
|
| myStatData.graphPosY = canvas_pos.y;
|
| onData = true;
|
| if (action == "annotate") {
|
| - dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][1],jsGraphAnnotate[ctx.ChartNewId][i][2],{otherVal:true}), myStatData);
|
| + dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][1],jsGraphAnnotate[ctx.ChartNewId][i][2],{otherVal:true}), myStatData,config);
|
| annotateDIV.innerHTML = dispString;
|
| show = true;
|
| } else {
|
| @@ -796,7 +803,7 @@ function doMouseAction(config, ctx, event, data, action, funct) {
|
| myStatData.graphPosY = canvas_pos.y;
|
| onData = true;
|
| if (action == "annotate") {
|
| - dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][1],jsGraphAnnotate[ctx.ChartNewId][i][2],{otherVal:true}), myStatData);
|
| + dispString = tmplbis(setOptionValue("ANNOTATELABEL",ctx,data,jsGraphAnnotate[ctx.ChartNewId][i][3],undefined,config.annotateLabel,jsGraphAnnotate[ctx.ChartNewId][i][1],jsGraphAnnotate[ctx.ChartNewId][i][2],{otherVal:true}), myStatData,config);
|
| annotateDIV.innerHTML = dispString;
|
| show = true;
|
| } else {
|
| @@ -1608,14 +1615,18 @@ window.Chart = function(context) {
|
| thousandSeparator: "",
|
| roundNumber: "none",
|
| roundPct: -1,
|
| + templatesOpenTag : "<%=",
|
| + templatesCloseTag : "%>",
|
| fmtV1: "none",
|
| fmtV2: "none",
|
| fmtV3: "none",
|
| fmtV4: "none",
|
| fmtV5: "none",
|
| fmtV6: "none",
|
| + fmtV6T: "none",
|
| fmtV7: "none",
|
| fmtV8: "none",
|
| + fmtV8T: "none",
|
| fmtV9: "none",
|
| fmtV10: "none",
|
| fmtV11: "none",
|
| @@ -1845,7 +1856,7 @@ window.Chart = function(context) {
|
| } else ctx.textBaseline = setOptionValue("INGRAPHDATAVALIGN",ctx,data,statData,undefined,config.inGraphDataVAlign,i,-1,{nullValue : true} );
|
| ctx.font = setOptionValue("INGRAPHDATAFONTSTYLE",ctx,data,statData,undefined,config.inGraphDataFontStyle,i,-1,{nullValue : true} ) + ' ' + setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,-1,{nullValue : true} ) + 'px ' + setOptionValue("INGRAPHDATAFONTFAMILY",ctx,data,statData,undefined,config.inGraphDataFontFamily,i,-1,{nullValue : true} );
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,-1,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i],config);
|
| ctx.translate(midPosX + labelRadius * Math.cos(posAngle), midPosY - labelRadius * Math.sin(posAngle));
|
| if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxis") ctx.rotate(2 * Math.PI - posAngle);
|
| else if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxisRotateLabels") {
|
| @@ -2059,7 +2070,7 @@ window.Chart = function(context) {
|
| if ((j * rotationDegree + 2 * Math.PI) % (2 * Math.PI) > Math.PI / 2 && (j * rotationDegree + 2 * Math.PI) % (2 * Math.PI) < 3 * Math.PI / 2) ctx.rotate(3 * Math.PI + j * rotationDegree);
|
| else ctx.rotate(2 * Math.PI + j * rotationDegree);
|
| } else ctx.rotate(setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) * (Math.PI / 180));
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i][j],config);
|
| ctx.fillTextMultiLine(dispString, 0, 0, ctx.textBaseline, setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,-1,{nullValue : true} ),true);
|
| ctx.restore();
|
| }
|
| @@ -2328,7 +2339,7 @@ window.Chart = function(context) {
|
| } else ctx.textBaseline = setOptionValue("INGRAPHDATAVALIGN",ctx,data,statData,undefined,config.inGraphDataVAlign,i,-1,{nullValue : true} );
|
| ctx.font = setOptionValue("INGRAPHDATAFONTSTYLE",ctx,data,statData,undefined,config.inGraphDataFontStyle,i,-1,{nullValue : true} ) + ' ' + setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,-1,{nullValue : true} ) + 'px ' + setOptionValue("INGRAPHDATAFONTFAMILY",ctx,data,statData,undefined,config.inGraphDataFontFamily,i,-1,{nullValue : true} );
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,-1,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i],config);
|
| ctx.translate(midPieX + labelRadius * Math.cos(posAngle), midPieY - labelRadius * Math.sin(posAngle));
|
| if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxis") ctx.rotate(2 * Math.PI - posAngle);
|
| else if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxisRotateLabels") {
|
| @@ -2359,7 +2370,7 @@ window.Chart = function(context) {
|
| else if (setOptionValue("INGRAPHDATAANGLEPOSITION",ctx,data,statData,undefined,config.inGraphDataAnglePosition,i,-1,{nullValue : true} ) == 2) posAngle = realCumulativeAngle - statData[i].segmentAngle / 2 + setOptionValue("INGRAPHDATAPADDINANGLE",ctx,data,statData,undefined,config.inGraphDataPaddingAngle,i,-1,{nullValue: true }) * (Math.PI / 180);
|
| else if (setOptionValue("INGRAPHDATAANGLEPOSITION",ctx,data,statData,undefined,config.inGraphDataAnglePosition,i,-1,{nullValue : true} ) == 3) posAngle = realCumulativeAngle - statData[i].segmentAngle + setOptionValue("INGRAPHDATAPADDINANGLE",ctx,data,statData,undefined,config.inGraphDataPaddingAngle,i,-1,{nullValue: true }) * (Math.PI / 180);
|
| realCumulativeAngle -= statData[i].segmentAngle;
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i],config);
|
| var textMeasurement = ctx.measureText(dispString).width;
|
| var MaxRadiusX = Math.abs((msr.availableWidth / 2 - textMeasurement) / Math.cos(posAngle)) - setOptionValue("INGRAPHDATAPADDINGRADIUS",ctx,data,statData,undefined,config.inGraphDataPaddingRadius,i,-1,{nullValue: true} ) - 5;
|
| if (MaxRadiusX < pieRadius) pieRadius = MaxRadiusX;
|
| @@ -2466,7 +2477,7 @@ window.Chart = function(context) {
|
| } else ctx.textBaseline = setOptionValue("INGRAPHDATAVALIGN",ctx,data,statData,undefined,config.inGraphDataVAlign,i,-1,{nullValue : true} );
|
| ctx.font = setOptionValue("INGRAPHDATAFONTSTYLE",ctx,data,statData,undefined,config.inGraphDataFontStyle,i,-1,{nullValue : true} ) + ' ' + setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,-1,{nullValue : true} ) + 'px ' + setOptionValue("INGRAPHDATAFONTFAMILY",ctx,data,statData,undefined,config.inGraphDataFontFamily,i,-1,{nullValue : true} );
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,-1,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i],config);
|
| ctx.translate(midPieX + labelRadius * Math.cos(posAngle), midPieY - labelRadius * Math.sin(posAngle));
|
| if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxis") ctx.rotate(2 * Math.PI - posAngle);
|
| else if (setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,-1,{nullValue : true} ) == "inRadiusAxisRotateLabels") {
|
| @@ -2497,7 +2508,7 @@ window.Chart = function(context) {
|
| else if (setOptionValue("INGRAPHDATAANGLEPOSITION",ctx,data,statData,undefined,config.inGraphDataAnglePosition,i,-1,{nullValue : true} ) == 2) posAngle = realCumulativeAngle - statData[i].segmentAngle / 2 + setOptionValue("INGRAPHDATAPADDINANGLE",ctx,data,statData,undefined,config.inGraphDataPaddingAngle,i,-1,{nullValue: true }) * (Math.PI / 180);
|
| else if (setOptionValue("INGRAPHDATAANGLEPOSITION",ctx,data,statData,undefined,config.inGraphDataAnglePosition,i,-1,{nullValue : true} ) == 3) posAngle = realCumulativeAngle - statData[i].segmentAngle + setOptionValue("INGRAPHDATAPADDINANGLE",ctx,data,statData,undefined,config.inGraphDataPaddingAngle,i,-1,{nullValue: true }) * (Math.PI / 180);
|
| realCumulativeAngle -= statData[i].segmentAngle;
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,-1,{nullValue : true} ), statData[i],config);
|
| var textMeasurement = ctx.measureText(dispString).width;
|
| var MaxRadiusX = Math.abs((msr.availableWidth / 2 - textMeasurement) / Math.cos(posAngle)) - setOptionValue("INGRAPHDATAPADDINGRADIUS",ctx,data,statData,undefined,config.inGraphDataPaddingRadius,i,-1,{nullValue: true} ) - 5;
|
| if (MaxRadiusX < doughnutRadius) doughnutRadius = MaxRadiusX;
|
| @@ -2905,7 +2916,7 @@ window.Chart = function(context) {
|
| if (labelTemplateString) {
|
| calculatedScale.labels.push(tmpl(labelTemplateString, {
|
| value: fmtChartJS(config, 1 * ((scaleStartValue + (scaleStepWidth * i)).toFixed(getDecimalPlaces(scaleStepWidth))), config.fmtYLabel)
|
| - }));
|
| + },config));
|
| }
|
| }
|
| msr = setMeasures(data, config, ctx, height, width, calculatedScale.labels, null, true, false, true, true, true, "StackedBar");
|
| @@ -2988,7 +2999,7 @@ window.Chart = function(context) {
|
| ctx.textBaseline = setOptionValue("INGRAPHDATAVALIGN",ctx,data,statData,undefined,config.inGraphDataVAlign,i,j,{nullValue : true} );
|
| ctx.font = setOptionValue("INGRAPHDATAFONTSTYLE",ctx,data,statData,undefined,config.inGraphDataFontStyle,i,j,{nullValue : true} ) + ' ' + setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ) + 'px ' + setOptionValue("INGRAPHDATAFONTFAMILY",ctx,data,statData,undefined,config.inGraphDataFontFamily,i,j,{nullValue : true} );
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,j,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j],config);
|
| ctx.beginPath();
|
| ctx.beginPath();
|
| yPos = 0;
|
| @@ -3243,7 +3254,7 @@ window.Chart = function(context) {
|
| if (labelTemplateString) {
|
| calculatedScale.labels.push(tmpl(labelTemplateString, {
|
| value: fmtChartJS(config, 1 * ((scaleStartValue + (scaleStepWidth * i)).toFixed(getDecimalPlaces(scaleStepWidth))), config.fmtYLabel)
|
| - }));
|
| + },config));
|
| }
|
| }
|
| msr = setMeasures(data, config, ctx, height, width, calculatedScale.labels, null, true, true, true, true, true, "HorizontalStackedBar");
|
| @@ -3331,7 +3342,7 @@ window.Chart = function(context) {
|
| ctx.textBaseline = setOptionValue("INGRAPHDATAVALIGN",ctx,data,statData,undefined,config.inGraphDataVAlign,i,j,{nullValue : true} );
|
| ctx.font = setOptionValue("INGRAPHDATAFONTSTYLE",ctx,data,statData,undefined,config.inGraphDataFontStyle,i,j,{nullValue : true} ) + ' ' + setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ) + 'px ' + setOptionValue("INGRAPHDATAFONTFAMILY",ctx,data,statData,undefined,config.inGraphDataFontFamily,i,j,{nullValue : true} );
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,j,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ),statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ),statData[i][j],config);
|
| ctx.beginPath();
|
| yPos = 0;
|
| xPos = 0;
|
| @@ -3349,12 +3360,12 @@ window.Chart = function(context) {
|
| } else if (setOptionValue("INGRAPHDATAYPOSITION",ctx,data,statData,undefined,config.inGraphDataYPosition,i,j,{nullValue : true} ) == 3) {
|
| yPos = statData[i][j].yPosTop - setOptionValue("INGRAPHDATAPADDINGY",ctx,data,statData,undefined,config.inGraphDataPaddingY,i,j,{nullValue : true} );
|
| }
|
| - if(xPos<=msr.availableWidth+msr.leftNotUsableSize) {
|
| +// if(xPos<=msr.availableWidth+msr.leftNotUsableSize) {
|
| ctx.translate(xPos, yPos);
|
| ctx.rotate(setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,j,{nullValue : true} ) * (Math.PI / 180));
|
| ctx.fillTextMultiLine(dispString, 0, 0, ctx.textBaseline, setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ),true);
|
| ctx.restore();
|
| - }
|
| +// }
|
| }
|
| }
|
| }
|
| @@ -3725,7 +3736,7 @@ window.Chart = function(context) {
|
| yPos = statData[i][j].yPosTop - setOptionValue("INGRAPHDATAPADDINGY",ctx,data,statData,undefined,config.inGraphDataPaddingY,i,j,{nullValue : true} );
|
| }
|
| ctx.translate(xPos, yPos);
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j],config);
|
| ctx.rotate(setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,j,{nullValue : true} ) * (Math.PI / 180));
|
| ctx.fillTextMultiLine(dispString, 0, 0, ctx.textBaseline, setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ),true);
|
| ctx.restore();
|
| @@ -4074,7 +4085,7 @@ window.Chart = function(context) {
|
| xPos = statData[i][j].xPosRight + setOptionValue("INGRAPHDATAPADDINGX",ctx,data,statData,undefined,config.inGraphDataPaddingX,i,j,{nullValue : true} );
|
| }
|
| ctx.translate(xPos, yPos);
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j],config);
|
| ctx.rotate(setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,j,{nullValue : true} ) * (Math.PI / 180));
|
| ctx.fillTextMultiLine(dispString, 0, 0, ctx.textBaseline, setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ),true);
|
| ctx.restore();
|
| @@ -4453,14 +4464,14 @@ window.Chart = function(context) {
|
| for (var i = 0; i < numberOfSteps + 1; i++) {
|
| labels.push(tmpl(labelTemplateString, {
|
| value: fmtChartJS(config, 1 * ((graphMin + (stepValue * i)).toFixed(getDecimalPlaces(stepValue))), fmtYLabel)
|
| - }));
|
| + },config));
|
| }
|
| } else { // logarithmic scale 10,100,1000,...
|
| var value = graphMin;
|
| for (var i = 0; i < numberOfSteps + 1; i++) {
|
| labels.push(tmpl(labelTemplateString, {
|
| value: fmtChartJS(config, 1 * value.toFixed(getDecimalPlaces(value)), fmtYLabel)
|
| - }));
|
| + },config));
|
| value *= 10;
|
| }
|
| }
|
| @@ -4520,13 +4531,20 @@ window.Chart = function(context) {
|
| };
|
| //Javascript micro templating by John Resig - source at http://ejohn.org/blog/javascript-micro-templating/
|
| var cache = {};
|
| +
|
| + function tmpl(str, data,config) {
|
| + newstr=str;
|
| + if(newstr.substr(0,config.templatesOpenTag.length)==config.templatesOpenTag)newstr="<%="+newstr.substr(config.templatesOpenTag.length,newstr.length-config.templatesOpenTag.length);
|
| + if(newstr.substr(newstr.length-config.templatesCloseTag.length,config.templatesCloseTag.length)==config.templatesCloseTag)newstr=newstr.substr(0,newstr.length-config.templatesCloseTag.length)+"%>";
|
| + return tmplpart2(newstr,data);
|
| + }
|
|
|
| - function tmpl(str, data) {
|
| + function tmplpart2(str, data) {
|
| // Figure out if we're getting a template, or if we need to
|
| // load the template - and be sure to cache the result.
|
| var fn = !/\W/.test(str) ?
|
| cache[str] = cache[str] ||
|
| - tmpl(document.getElementById(str).innerHTML) :
|
| + tmplpart2(document.getElementById(str).innerHTML) :
|
| // Generate a reusable function that will serve as a template
|
| // generator (and which will be cached).
|
| new Function("obj",
|
| @@ -5458,7 +5476,7 @@ window.Chart = function(context) {
|
| ctx.fillStyle = setOptionValue("INGRAPHDATAFONTCOLOR",ctx,data,statData,undefined,config.inGraphDataFontColor,i,j,{nullValue : true} );
|
| var paddingTextX = setOptionValue("INGRAPHDATAPADDINGX",ctx,data,statData,undefined,config.inGraphDataPaddingX,i,j,{nullValue : true} ),
|
| paddingTextY = setOptionValue("INGRAPHDATAPADDINGY",ctx,data,statData,undefined,config.inGraphDataPaddingY,i,j,{nullValue : true} );
|
| - var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j]);
|
| + var dispString = tmplbis(setOptionValue("INGRAPHDATATMPL",ctx,data,statData,undefined,config.inGraphDataTmpl,i,j,{nullValue : true} ), statData[i][j],config);
|
| ctx.translate(statData[i][j].xPos + paddingTextX, statData[i][j].yAxisPos - currentAnimPc.mainVal * statData[i][j].yPosOffset - paddingTextY);
|
| ctx.rotate(setOptionValue("INGRAPHDATAROTATE",ctx,data,statData,undefined,config.inGraphDataRotate,i,j,{nullValue : true} ) * (Math.PI / 180));
|
| ctx.fillTextMultiLine(dispString, 0, 0, ctx.textBaseline, setOptionValue("INGRAPHDATAFONTSIZE",ctx,data,statData,undefined,config.inGraphDataFontSize,i,j,{nullValue : true} ),true);
|
| @@ -6024,6 +6042,7 @@ switch(ctx.tpchart) {
|
| var lastNotMissingj=[];
|
| prevpos[0]=[];
|
| prevpos[1]=[];
|
| + var grandtotal=0;
|
| for (var i = 0; i < data.datasets.length; i++) {
|
| // BUG when all data are missing !
|
| if (typeof data.datasets[i].xPos != "undefined" && tpdraw(ctx,data.datasets[i])=="Line") {
|
| @@ -6054,6 +6073,7 @@ switch(ctx.tpchart) {
|
| mnvalue[1][j]=Number.MAX_VALUE;
|
| }
|
| if (!(typeof data.datasets[i].data[j] == 'undefined')) {
|
| + grandtotal += 1 * data.datasets[i].data[j];
|
| if(firstNotMissingi[i]==-1)firstNotMissingi[i]=j;
|
| lastNotMissingi[i]=j;
|
| if(firstNotMissingj[j]==-1)firstNotMissingj[j]=i;
|
| @@ -6083,14 +6103,14 @@ switch(ctx.tpchart) {
|
| if (lgtxt2 == "" && !(typeof(data.labels[j]) == "undefined")) lgtxt2 = data.labels[j];
|
| if (typeof lgtxt2 == "string") lgtxt2 = lgtxt2.trim();
|
|
|
| - if (!(typeof(data.datasets[i].data[j]) == 'undefined')) {
|
| +// if (!(typeof(data.datasets[i].data[j]) == 'undefined') && data.datasets[i].data[j] != 0) {
|
| + if (!(typeof(data.datasets[i].data[j]) == 'undefined') ) {
|
| cumvalue[axis][j]+=1*data.datasets[i].data[j];
|
| switch(tpdraw(ctx,data.datasets[i])) {
|
| case "Bar" :
|
| case "StackedBar" :
|
| case "HorizontalBar" :
|
| case "HorizontalStackedBar" :
|
| -
|
| result[i][j]= {
|
| config: config,
|
| v1: fmtChartJS(config, lgtxt, config.fmtV1),
|
| @@ -6099,6 +6119,7 @@ switch(ctx.tpchart) {
|
| v4: fmtChartJS(config, cumvalue[axis][j], config.fmtV4),
|
| v5: fmtChartJS(config, totvalue[axis][j], config.fmtV5),
|
| v6: roundToWithThousands(config, fmtChartJS(config, 100 * data.datasets[i].data[j] / totvalue[axis][j], config.fmtV6), config.roundPct),
|
| + v6T: roundToWithThousands(config, fmtChartJS(config, 100 * data.datasets[i].data[j] / grandtotal, config.fmtV6T), config.roundPct),
|
| v11: fmtChartJS(config, i, config.fmtV11),
|
| v12: fmtChartJS(config, j, config.fmtV12),
|
| lgtxt: lgtxt,
|
| @@ -6107,10 +6128,12 @@ switch(ctx.tpchart) {
|
| cumvalue: cumvalue[axis][j],
|
| totvalue: totvalue[axis][j],
|
| pctvalue: 100 * data.datasets[i].data[j] / totvalue[axis][j],
|
| + pctvalueT: 100 * data.datasets[i].data[j] / grandtotal,
|
| maxvalue : mxvalue[axis][j],
|
| minvalue : mnvalue[axis][j],
|
| lmaxvalue : lmaxvalue[axis][i],
|
| lminvalue : lminvalue[axis][i],
|
| + grandtotal : grandtotal,
|
| firstNotMissing : firstNotMissingj[j],
|
| lastNotMissing : lastNotMissingj[j],
|
| prevNotMissing : prevnotemptyj,
|
| @@ -6120,6 +6143,7 @@ switch(ctx.tpchart) {
|
| i: i,
|
| data: data
|
| };
|
| + if(1 * data.datasets[i].data[j]==0 && (tpdraw(ctx,data.datasets[i])=="HorizontalStackedBar" || tpdraw(ctx,data.datasets[i])=="StackedBar"))result[i][j].v3="";
|
| break;
|
| case "Line" :
|
| case "Radar" :
|
| @@ -6129,9 +6153,10 @@ switch(ctx.tpchart) {
|
| v2: fmtChartJS(config, lgtxt2, config.fmtV2),
|
| v3: fmtChartJS(config, 1 * data.datasets[i].data[j], config.fmtV3),
|
| v5: fmtChartJS(config, 1 * data.datasets[i].data[j], config.fmtV5),
|
| - v6: fmtChartJS(config, mxvalue[axis][j], config.fmtV7),
|
| - v7: fmtChartJS(config, totvalue[axis][j], config.fmtV6),
|
| + v6: fmtChartJS(config, mxvalue[axis][j], config.fmtV6),
|
| + v7: fmtChartJS(config, totvalue[axis][j], config.fmtV7),
|
| v8: roundToWithThousands(config, fmtChartJS(config, 100 * data.datasets[i].data[j] / totvalue[axis][j], config.fmtV8), config.roundPct),
|
| + v8T: roundToWithThousands(config, fmtChartJS(config, 100 * data.datasets[i].data[j] / grandtotal, config.fmtV8T), config.roundPct),
|
| v11: fmtChartJS(config, i, config.fmtV11),
|
| v12: fmtChartJS(config, j, config.fmtV12),
|
| lgtxt: lgtxt,
|
| @@ -6139,6 +6164,7 @@ switch(ctx.tpchart) {
|
| datavalue: 1 * data.datasets[i].data[j],
|
| diffnext: 1 * data.datasets[i].data[j],
|
| pctvalue: 100 * data.datasets[i].data[j] / totvalue[axis][j],
|
| + pctvalueT: 100 * data.datasets[i].data[j] / grandtotal,
|
| totvalue : totvalue[axis][j],
|
| cumvalue: cumvalue[axis][j],
|
| maxvalue : mxvalue[axis][j],
|
| @@ -6146,6 +6172,7 @@ switch(ctx.tpchart) {
|
| lmaxvalue : lmaxvalue[axis][i],
|
| lminvalue : lminvalue[axis][i],
|
| lminvalue : lminvalue[axis][i],
|
| + grandtotal : grandtotal,
|
| firstNotMissing : firstNotMissingi[i],
|
| lastNotMissing : lastNotMissingi[i],
|
| prevNotMissing : prevnotemptyj,
|
| @@ -6188,6 +6215,7 @@ switch(ctx.tpchart) {
|
| lastNotMissing : lastNotMissingj[j],
|
| prevNotMissing : prevnotemptyj,
|
| prevMissing : prevemptyj,
|
| + grandtotal : grandtotal,
|
| };
|
| break;
|
| case "Line" :
|
| @@ -6200,6 +6228,7 @@ switch(ctx.tpchart) {
|
| lastNotMissing : lastNotMissingi[i],
|
| prevNotMissing : prevnotemptyj,
|
| prevMissing : prevemptyj,
|
| + grandtotal : grandtotal,
|
| };
|
| break;
|
| }
|
| @@ -6420,7 +6449,8 @@ switch(ctx.tpchart) {
|
| tempp[j]=0;
|
| tempn[j]=0;
|
| }
|
| - if ((typeof(data.datasets[i].data[j]) == 'undefined') || 1*data.datasets[i].data[j] == 0 ) continue;
|
| + if (typeof(data.datasets[i].data[j]) == 'undefined') continue;
|
| +// if ((typeof(data.datasets[i].data[j]) == 'undefined') || 1*data.datasets[i].data[j] == 0 ) continue;
|
|
|
| statData[i][j].xPosLeft= othervars.yAxisPosX + config.barValueSpacing + othervars.valueHop * j;
|
| if (1*data.datasets[i].data[j]<0) {
|
| @@ -6550,11 +6580,17 @@ function setOptionValue(reference,ctx,data,statData,optionvar,defaultvalue,posi,
|
|
|
| if(typeof optionvar == "undefined") {
|
| if(typeof defaultvalue=="function") return defaultvalue(reference,ctx,data,statData,posi,posj,othervars);
|
| - else if(typeof defaultvalue == "object") return defaultvalue[Math.min(defaultvalue.length-1,Math.max(0,posi))];
|
| + else if(typeof defaultvalue == "object") {
|
| + if(posj==-1)return defaultvalue[Math.min(defaultvalue.length-1,Math.max(0,posi))];
|
| + else return defaultvalue[Math.min(defaultvalue.length-1,Math.max(0,posj))];
|
| + }
|
| else return defaultvalue;
|
| }
|
| if(typeof optionvar=="function") return optionvar(reference,ctx,data,statData,posi,posj,othervars);
|
| - else if(typeof optionvar == "object") return optionvar[Math.min(optionvar.length-1,Math.max(0,posi))];
|
| + else if(typeof optionvar == "object") {
|
| + if (posj==-1)return optionvar[Math.min(optionvar.length-1,Math.max(0,posi))];
|
| + else return optionvar[Math.min(optionvar.length-1,Math.max(0,posj))];
|
| + }
|
| else return optionvar;
|
| };
|
|
|
|
|