Index: bower_components/chartnewjs/mathFunctions.js |
diff --git a/bower_components/chartnewjs/mathFunctions.js b/bower_components/chartnewjs/mathFunctions.js |
deleted file mode 100644 |
index 936bdd7b1091cfdecf5e76717922792e6519d8eb..0000000000000000000000000000000000000000 |
--- a/bower_components/chartnewjs/mathFunctions.js |
+++ /dev/null |
@@ -1,170 +0,0 @@ |
-function mean(params) { |
- var datasetNr = params.datasetNr; |
- var data = params.data; |
- var mean = 0; |
- var nr = 0; |
- for (var j = 0; j < data.datasets[datasetNr].data.length; j++) { |
- // important to check because missing values are possible |
- if (!(typeof(data.datasets[datasetNr].data[j])=='undefined')){ |
- mean += 1*data.datasets[datasetNr].data[j]; |
- nr++; |
- } |
- } |
- mean /= nr; |
- return mean; |
-} |
- |
-function varianz(params) { |
- var data = params.data; |
- var datasetNr = params.datasetNr; |
- var meanVal = mean(params); |
- var varianz = 0; |
- var nr = 0; |
- for (var j = 0; j < data.datasets[datasetNr].data.length; j++) { |
- // important to check because missing values are possible |
- if (!(typeof(data.datasets[datasetNr].data[j])=='undefined')) { |
- varianz += Math.pow(1*data.datasets[datasetNr].data[j]-meanVal,2); |
- nr++; |
- } |
- } |
- return varianz/nr; |
-} |
- |
-function stddev(params) { |
- return Math.sqrt(varianz(params)); |
-} |
- |
-function cv(params) { |
- return stddev(params)/mean(params); |
-} |
- |
-function median(params) { |
- function numSort (a, b) { |
- return a - b; |
- } |
- // slice => copy array |
- var dataArray = params.data.datasets[params.datasetNr].data.slice(); |
- dataArray.sort(numSort); |
- // missing values are at the end |
- var dataArrayLength = dataArray.length; |
- j = dataArrayLength-1; |
- while (typeof(dataArray[j]) == "undefined" && j >= 0) { |
- j--; |
- } |
- dataArrayLength = j+1; |
- // odd |
- if (dataArrayLength % 2) { |
- return dataArray[Math.floor(dataArrayLength/2)]; |
- } else { // even |
- var lowerMiddle = dataArray[dataArrayLength/2-1]; |
- var higherMiddle = dataArray[dataArrayLength/2]; |
- return (higherMiddle+lowerMiddle)/2; |
- } |
-} |
- |
-function drawMath(ctx,config,data,msr,vars) { |
- var xAxisPosY = vars.xAxisPosY; |
- var yAxisPosX = vars.yAxisPosX; |
- var valueHop = vars.valueHop; |
- var scaleHop = vars.scaleHop; |
- var zeroY = vars.zeroY; |
- var calculatedScale = vars.calculatedScale; |
- var calculateOffset = vars.calculateOffset; |
- var barWidth = vars.barWidth; |
- var barBool = !(typeof barWidth == "undefined") ? true : false; |
- |
- // check each dataset if a mathDraw function exists |
- for (var i = 0; i < data.datasets.length; i++) { |
- // get mathFctName (stddev|mean|...) |
- var deviationFct = data.datasets[i].drawMathDeviation; |
- if (deviationFct) { |
- drawMathDeviation(i,deviationFct); |
- } |
- var lineFct = data.datasets[i].drawMathLine; |
- if (lineFct) { |
- drawMathLine(i,lineFct); |
- } |
- } |
- |
- /** |
- * Draw a deviation vertical line (if needed with top and bottom horizontal lines) |
- * @param i {integer} dataset number |
- * @param deviationFct {string} math function name |
- */ |
- function drawMathDeviation(i,deviationFct) { |
- var deviation = 0; |
- // check if the math function exists |
- if (typeof eval(deviationFct) == "function") { |
- var parameter = {data:data,datasetNr: i}; |
- deviation = window[deviationFct](parameter); |
- } |
- if (isNumber(deviation)) { |
- ctx.strokeStyle= data.datasets[i].deviationStrokeColor ? data.datasets[i].deviationStrokeColor : config.defaultStrokeColor; |
- ctx.lineWidth = config.datasetStrokeWidth; |
- ctx.beginPath(); |
- for (var j = 0; j < data.datasets[i].data.length; j++) { |
- // important to check because missing values are possible |
- if (!(typeof(data.datasets[i].data[j])=='undefined')) { |
- var deviationWidth = data.datasets[i].deviationWidth; |
- // draw the top and the bottom of the vertical line if a deviationWidth exists |
- if (deviationWidth) { |
- ctx.moveTo(xPos(j,i,barWidth,barBool)-deviationWidth,yPos(i,j,-deviation,true)); |
- ctx.lineTo(xPos(j,i,barWidth,barBool)+deviationWidth,yPos(i,j,-deviation,true)); |
- ctx.moveTo(xPos(j,i,barWidth,barBool)-deviationWidth,yPos(i,j,deviation,true)); |
- ctx.lineTo(xPos(j,i,barWidth,barBool)+deviationWidth,yPos(i,j,deviation,true)); |
- } |
- // draw the vertical line |
- ctx.moveTo(xPos(j,i,barWidth,barBool),yPos(i,j,-deviation,true)); |
- ctx.lineTo(xPos(j,i,barWidth,barBool),yPos(i,j,deviation,true)); |
- } |
- } |
- ctx.stroke(); |
- ctx.closePath(); |
- } |
- } |
- |
- /** |
- * Draw a horizontal line |
- * @param i {integer} numer of dataset |
- * @param lineFct {string} name of the mathfunctions => compute height |
- */ |
- function drawMathLine(i,lineFct) { |
- var line = 0; |
- // check if the math function exists |
- if (typeof eval(lineFct) == "function") { |
- var parameter = {data:data,datasetNr: i}; |
- line = window[lineFct](parameter); |
- } |
- if (!(typeof(line)=='undefined')) { |
- ctx.strokeStyle= data.datasets[i].mathLineStrokeColor ? data.datasets[i].mathLineStrokeColor : config.defaultStrokeColor; |
- ctx.lineWidth = config.datasetStrokeWidth; |
- ctx.beginPath(); |
- ctx.moveTo(yAxisPosX,yPos(i,0,line,false)); |
- ctx.lineTo(yAxisPosX + msr.availableWidth,yPos(i,data.datasets[i].data.length-1,line,false)); |
- ctx.stroke(); |
- ctx.closePath(); |
- } |
- } |
- |
- /** |
- * Get a y position depending on the current values |
- * @param dataset {integer} number of dataset |
- * @param iteration {integer} number of value inside dataset.data |
- * @param add {float} add a value to the current value if value is true |
- * @param value {bool} true => value+add, false=>add |
- * @returns {float} position (px) |
- */ |
- function yPos(dataSet, iteration, add,value) { |
- value = value ? 1*data.datasets[dataSet].data[iteration] : 0; |
- return xAxisPosY - calculateOffset(config.logarithmic, value+add, calculatedScale, scaleHop); |
- }; |
- function xPos(iteration,dataSet,barWidth,bar) { |
- if (bar) { |
- return yAxisPosX + config.barValueSpacing + valueHop * iteration + barWidth * dataSet |
- + config.barDatasetSpacing * dataSet + config.barStrokeWidth * dataSet+barWidth/2; |
- } else { |
- return yAxisPosX + (valueHop * iteration); |
- } |
- |
- }; |
-} |