1. Refactored some visualziation helper functions spread across different files into one javascript file.
2. Fixed the bug NIHVIVO-1595. Now for https: sites the sparkline visualizations are rendered by generating a chart image url instead of going throught the google visualization API. This image is directly placed in the container. For http sites it follows the old procedure.
This commit is contained in:
parent
5ab3cbce42
commit
c920c84699
14 changed files with 352 additions and 45 deletions
|
@ -0,0 +1,95 @@
|
|||
/**
|
||||
* For rendering images dynamically.
|
||||
*
|
||||
*/
|
||||
$.fn.image = function(src, successFunc, failureFunc){
|
||||
return this.each(function(){
|
||||
var profileImage = new Image();
|
||||
profileImage.onerror = failureFunc;
|
||||
profileImage.onload = successFunc;
|
||||
profileImage.src = src;
|
||||
|
||||
return profileImage;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Function by Google Charts API Team to do "extended encode" of data.
|
||||
*/
|
||||
function extendedEncodeDataForChartURL(arrVals, maxVal) {
|
||||
|
||||
var EXTENDED_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.';
|
||||
var EXTENDED_MAP_LENGTH = EXTENDED_MAP.length;
|
||||
var chartData = 'e:';
|
||||
|
||||
for (i = 0, len = arrVals.length; i < len; i++) {
|
||||
// In case the array vals were translated to strings.
|
||||
var numericVal = new Number(arrVals[i]);
|
||||
// Scale the value to maxVal.
|
||||
var scaledVal = Math.floor(EXTENDED_MAP_LENGTH * EXTENDED_MAP_LENGTH * numericVal / maxVal);
|
||||
|
||||
if (scaledVal > (EXTENDED_MAP_LENGTH * EXTENDED_MAP_LENGTH) - 1) {
|
||||
chartData += "..";
|
||||
} else if (scaledVal < 0) {
|
||||
chartData += '__';
|
||||
} else {
|
||||
// Calculate first and second digits and add them to the output.
|
||||
var quotient = Math.floor(scaledVal / EXTENDED_MAP_LENGTH);
|
||||
var remainder = scaledVal - EXTENDED_MAP_LENGTH * quotient;
|
||||
chartData += EXTENDED_MAP.charAt(quotient) + EXTENDED_MAP.charAt(remainder);
|
||||
}
|
||||
}
|
||||
|
||||
return chartData;
|
||||
}
|
||||
|
||||
/**
|
||||
* This will be used for getting images directly from the secure https://charts.googleapis.com
|
||||
* instead of http://charts.apis.google.com which currently throws security warnings.
|
||||
*
|
||||
* see http://code.google.com/apis/chart/docs/chart_params.html FOR chart parameters
|
||||
* see http://code.google.com/apis/chart/docs/data_formats.html FOR how to encode data
|
||||
*
|
||||
* sample constructed URL - https://chart.googleapis.com/chart?cht=ls&chs=148x58&chdlp=r&chco=3399CC&chd=e%3AW2ttpJbb..ttgAbbNtAA
|
||||
*/
|
||||
function constructVisualizationURLForSparkline(dataString, visualizationOptions) {
|
||||
|
||||
/*
|
||||
* Since we are directly going to use this URL in img tag, we are supposed to enocde "&"
|
||||
* update: But since we are directly using it in an Image creating function we dont need to encode it.
|
||||
*/
|
||||
//var parameterDifferentiator = "&";
|
||||
var parameterDifferentiator = "&";
|
||||
|
||||
var rootGoogleChartAPI_URL = "https://chart.googleapis.com/chart?";
|
||||
|
||||
/*
|
||||
* cht=ls indicates chart of type "line chart sparklines".
|
||||
* see http://code.google.com/apis/chart/docs/gallery/chart_gall.html
|
||||
*/
|
||||
var chartType = "cht=" + visualizationOptions.chartType;
|
||||
|
||||
/*
|
||||
* It seems google reduces 2px from width & height before rendering the actual image.
|
||||
* We will do the same.
|
||||
*/
|
||||
var chartSize = "chs=" + (visualizationOptions.width - 2) + "x" + (visualizationOptions.height - 2);
|
||||
|
||||
/*
|
||||
* It means that legend, if present, is to be displayed to the right of the chart,
|
||||
* legend entries in a vertical column.
|
||||
*/
|
||||
var chartLabelPosition = "chdlp=" + visualizationOptions.chartLabel;
|
||||
|
||||
/*
|
||||
* Color of the sparkline.
|
||||
*/
|
||||
var chartColor = "chco=" + visualizationOptions.color;
|
||||
|
||||
return rootGoogleChartAPI_URL + chartType + parameterDifferentiator
|
||||
+ chartSize + parameterDifferentiator
|
||||
+ chartLabelPosition + parameterDifferentiator
|
||||
+ chartColor + parameterDifferentiator
|
||||
+ "chd=" + dataString
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue