(function($) {
$.stretchyReporting = {};
$.stretchyReporting.initialise = function(params) {
initialiseReporting(params)
};
$.stretchyReporting.newReportSelected = function(selectedRpt) {
newReportSelected(selectedRpt);
};
$.stretchyReporting.showTypeChanged = function() {
showTypeChanged();
};
$.stretchyReporting.clearLoadingImg = function() {
clearLoadingImg();
};
$.stretchyReporting.nothingCallback = function() {
// nothing
};
$.stretchyReporting.changeLanguage = function(newLanguage) {
changeLanguage(newLanguage)
};
$.stretchyReporting.changeDecimals = function(newDecimals) {
changeDecimals(newDecimals)
};
$.stretchyReporting.changeSeparator= function(sepChar, decChar, indFormat) {
changeSeparator(sepChar, decChar, indFormat)
};
function fnRecordsDisplay(){
// oSettings isn't defined when table first created but coding around to not
// call this method until after it is.
// if (typeof(oSettings) != "undefined") return oSettings.fnRecordsDisplay()
// else return 0;
return oSettings.fnRecordsDisplay();
}
function initialiseReporting(params) {
tableSizeLimit = setTableSizeLimit();
showMsg("Table size limit is: " + tableSizeLimit );
nullTitleValue = "-99999999.11";
resValue = '';
if (params.resValue) resValue = params.resValue;
I18N_Needed = 'Y';
if (params.I18N_Needed) I18N_Needed = params.I18N_Needed;
bundleDir = 'bundle/';
if (params.bundleDir) bundleDir = params.bundleDir;
highlightMissingXlations = "Y";
if (params.highlightMissingXlations) highlightMissingXlations = params.highlightMissingXlations;
if (params.initialLanguage) initI18N(params.initialLanguage);
else initI18N("");
if (params.reportOutputDiv) $('#' + params.reportOutputDiv).html('
');
else
{
alert(doI18N("reportingInitError", ['reportOutputDiv']));
return;
}
rptDB = ""
if (params.rptDB) rptDB = params.rptDB;
if (params.RESTUrl) RESTUrl = params.RESTUrl
else RESTUrl = "";
if (params.basicAuthKey) basicAuthKey = params.basicAuthKey
else basicAuthKey = "";
if (params.pentahoUrl) pentahoUrl = params.pentahoUrl
else pentahoUrl = "";
loadingImg = "dots64.gif";
if (params.loadingImg) loadingImg = params.loadingImg;
if (params.reportsListDiv) reportsListDiv = '#' + params.reportsListDiv;
else
{
alert(doI18N("reportingInitError", ['reportsListDiv']));
return;
}
$(reportsListDiv).html(' ');
reportsListDivLabel = 'Report';
if (params.inputParametersDiv) inputParametersDiv = '#' + params.inputParametersDiv;
else
{
alert(doI18N("reportingInitError", ['inputParametersDiv']));
return;
}
if (params.runReportDiv) runReportDiv = '#' + params.runReportDiv;
else
{
alert(doI18N("reportingInitError", ['runReportDiv']));
return;
}
if (params.clearReportDiv) clearReportDiv = '#' + params.clearReportDiv;
else
{
alert(doI18N("reportingInitError", ['clearReportDiv']));
return;
}
if (params.apiKey || params.sharedSecret || params.accessToken || params.tokenSecret)
{
showMsg("OAuth params passed");
isAuthRequest = true;
if ((params.apiKey == null) || (params.sharedSecret == null) || (params.accessToken == null) || (params.tokenSecret == null))
{
alert("Each of apiKey, sharedSecret, accessToken and tokenSecret must be passed as parameters");
return;
}
apiKey = params.apiKey;
sharedSecret = params.sharedSecret;
accessToken = params.accessToken;
tokenSecret = params.tokenSecret;
}
else
{
isAuthRequest = false;
showMsg("OAuth params were not passed");
}
reportListing = [];
listOfParameters = [];
setupButtons();
initialiseSuccessFunctionVariables();
initialiseDataTableDef();
decimalsNo = 4;
if (params.decimals) decimalsNo = params.decimals;
separatorChar = ',';
if (params.separatorChar) separatorChar = params.separatorChar;
dbDecimalChar = ".";
decimalChar = ".";
if (params.decimalChar) decimalChar = params.decimalChar;
indianFormat = false;
if (params.indianFormat) indianFormat = params.indianFormat;
reportQuery = 'FullReportList';
if (params.reportQuery) reportQuery = params.reportQuery;
getReportData(reportQuery, {}, setupReportListSuccess, true)
}
function setCurrentDate() {
var xxDate = new Date();
return xxDate.getFullYear() + "-" + pad2(xxDate.getMonth() + 1) + "-" + pad2(xxDate.getDate());
}
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
function formatNumber(nStr)
{
// format no. of decimal places
var mainNum;
if (decimalsNo < 0)
{
mainNum = (nStr / Math.pow(10, Math.abs(decimalsNo))).toFixed(0);
}
else mainNum = nStr.toFixed(decimalsNo);
if (indianFormat == true) return indianFormatNumber(mainNum)
else return generalFormatNumber(mainNum);
}
// function for converting string into indian currency format
function indianFormatNumber(inNum) {
var mainNum = inNum + '';
var signStr = "";
if (inNum < 0)
{
signStr = "-";
mainNum = mainNum.substr(1);
}
var dpos = mainNum.indexOf(dbDecimalChar);
var nStrEnd = '';
if (dpos != -1) {
nStrEnd = decimalChar + mainNum.substring(dpos + 1, mainNum.length);
mainNum = mainNum.substring(0, dpos);
}
var remLength = mainNum.length;
if (remLength > 3)
{
var strArray = [];
var biteSize = 3;
strArray.push(mainNum.substr(remLength - biteSize , biteSize));
mainNum = mainNum.substr(0, remLength - biteSize);
biteSize = 2;
do
{
remLength = mainNum.length;
if (remLength < 2) biteSize = 1;
strArray.push(mainNum.substr(remLength - biteSize , biteSize));
if (remLength > biteSize) mainNum = mainNum.substr(0, remLength - biteSize);
}
while (remLength > biteSize);
mainNum = "";
var arrLen = strArray.length - 1;
for (i = arrLen; i >= 0; i -= 1)
{
if (i < arrLen) mainNum += separatorChar;
mainNum += strArray[i];
}
}
return signStr + mainNum + nStrEnd;
}
function generalFormatNumber(inNum) {
var mainNum = inNum + '';
if (separatorChar != "")
{
var dpos = mainNum.indexOf(dbDecimalChar);
var nStrEnd = '';
if (dpos != -1) {
nStrEnd = decimalChar + mainNum.substring(dpos + 1, mainNum.length);
mainNum = mainNum.substring(0, dpos);
}
var rgx = /(\d+)(\d{3})/;
while (rgx.test(mainNum)) {
mainNum = mainNum.replace(rgx, '$1' + separatorChar + '$2');
}
return mainNum + nStrEnd;
}
else return mainNum; // no separator format
}
function getOrigTitleNumericValue(titleNumericValue) {
var returnVal = titleNumericValue.substr(13);
dblQuotePos = returnVal.indexOf('"');
return Number(returnVal.substr(0, dblQuotePos));
}
function invalidDate(checkDate) {
// validates for yyyy-mm-dd returns true if invalid, false is valid
var dateformat = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
if(!(dateformat.test(checkDate))) {
return true;
}
else
{
var dyear = checkDate.substring(0,4);
var dmonth = checkDate.substring(5,7) - 1;
var dday = checkDate.substring(8);
var newDate=new Date(dyear,dmonth ,dday);
return !((dday==newDate.getDate()) && (dmonth==newDate.getMonth()) && (dyear==newDate.getFullYear()));
}
}
function setupButtons() {
$(runReportDiv).button();
$(runReportDiv).button({ label: doI18N("rpt_run") });
$(runReportDiv).click(function() {
runTheReport();
});
$(clearReportDiv).button();
$(clearReportDiv).button({ label: doI18N("rpt_clear") });
$(clearReportDiv).click(function() {
clearTheReport();
});
disableRunButton();
disableClearButton();
}
function clearTheReport() {
$('#StretchyReportOutput').html("");
$('.DTTT_collection').remove();
disableClearButton();
}
function enableClearButton() {
$(clearReportDiv).button( "option", "disabled", false );
}
function disableClearButton() {
$(clearReportDiv).button( "option", "disabled", true );
}
function enableRunButton() {
$(runReportDiv).button( "option", "disabled", false );
}
function disableRunButton() {
$(runReportDiv).button( "option", "disabled", true );
}
function getReportListingIndexSelectedReport() {
var selectedRpt = $(reportsListDiv + ' select option:selected').val();
return getReportListingIndex(selectedRpt);
}
function getReportListingIndex(reportOption) {
for (var i in reportListing)
{
if (reportListing[i].name == reportOption)
{
return i;
}
}
var returnMessage = "Report Option not Found: " + reportOption;
alert(returnMessage);
return "returnMessage";
}
function hideAllParameters() {
clearTheReport();
for (var i in listOfParameters)
{
$("#" + listOfParameters[i].name).css("display", "none");
}
$("#rptOutputType").css("display", "none");
$("#rptShowType").css("display", "none");
}
function makeSelectTag(selectTagParams, selectOne, selectAll, xlateText) {
var selectHtml = '' + doI18N(selectTagParams.label) + '
';
selectHtml = selectHtml + '';
if (selectOne == true)
{
selectHtml = selectHtml + '' + doI18N('rpt_select_one') + ' ';
}
if (selectAll == true)
{
selectHtml = selectHtml + '' + doI18N('rpt_select_all') + ' ';
}
var textVal;
for (var i in selectTagParams.selectData)
{
if (xlateText == true) textVal = doI18N(selectTagParams.selectData[i].name)
else textVal = selectTagParams.selectData[i].name;
selectHtml = selectHtml + '' + textVal + ' ';
}
selectHtml = selectHtml + ' ';
$(selectTagParams.divName).html(selectHtml );
$(selectTagParams.divName + ' select option:eq(0)').attr('selected', 'selected');
}
function newReportSelected(selectedRpt) {
hideAllParameters();
if (!(selectedRpt == "0"))
{
enableRunButton();
var reportListingIndex = getReportListingIndex(selectedRpt);
var isParam = false;
for (var i in reportListing[reportListingIndex].parameters)
{
isParam = true;
$('#' + reportListing[reportListingIndex].parameters[i][1]).css("display", "inline");
}
if (reportListing[reportListingIndex].type == 'Pentaho') $("#rptOutputType").css("display", "inline");
if (reportListing[reportListingIndex].type == 'Table') $("#rptShowType").css("display", "inline");
if (isParam == false) runTheReport();
}
else disableRunButton();
}
function showTypeChanged() {
if ($(reportsListDiv + ' select option:selected').val() != "0") runTheReport()
else showMsg("was select one");
}
function runTheReport()
{
var selectedRpt = $(reportsListDiv + ' select option:selected').val();
clearTheReport();
var reportListingIndex = getReportListingIndexSelectedReport();
if (parameterValidationErrors(reportListing[reportListingIndex].parameters) == 1)
{
return;
}
var theParams = {};
var pValue;
var reportParameterName;
for (var i in reportListing[reportListingIndex].parameters)
{
var paramDetails = getParameterDetailsUsingName(reportListing[reportListingIndex].parameters[i][1]);
switch(paramDetails.displayType)
{
case "select":
pValue = $('#' + paramDetails.name+ ' select option:selected').val();
break;
case "date":
pValue = $('#' + paramDetails.variable).val();
break;
default:
alert("System Error: Unknown Display Type: " + paramDetails.displayType);
}
if (reportListing[reportListingIndex].type == 'Pentaho') reportParameterName = reportListing[reportListingIndex].parameters[i][0]
else reportParameterName = paramDetails.variable;
// alert("Variable: " + reportParameterName + " Value: " + pValue);
theParams[reportParameterName] = pValue ;
}
$('#StretchyReportOutput').html(' ');
var showOption = $('#rptShowType option:selected').val();
switch(reportListing[reportListingIndex].type)
{
case "Table":
if (showOption == "XLS") getExportCSV(selectedRpt, theParams, false)
else
{
reportDataSuccess = function(data, textStatus, jqXHR){
createTable(data);
showTableReport();
};
getReportData(selectedRpt, theParams, reportDataSuccess, false);
}
break;
case "Chart":
reportDataSuccess = function(data, textStatus, jqXHR){
createTable(data);
createChart(data);
showChartReport(reportListing[reportListingIndex].subtype);
};
getReportData(selectedRpt, theParams, reportDataSuccess, false);
break;
case "Pentaho":
getPentahoReport(selectedRpt, theParams);
break;
default:
alert("System Error: Unknown Report Type: " + reportListing[reportListingIndex].type);
}
enableClearButton();
}
function initialiseAllParameters() {
var parameterTableHtml = '';
for (var i in listOfParameters)
{
switch(listOfParameters[i].displayType)
{
case "select":
parameterTableHtml += '
';
break;
case "date":
parameterTableHtml += ' ';
break;
default:
alert("System Error: Unknown Display Type: " + listOfParameters[i].displayType);
return 1;
}
}
parameterTableHtml += 'PDF HTML EXCEL ';
parameterTableHtml += '' + doI18N("Show Table") + ' ' + doI18N("Full CSV Export") + ' ';
parameterTableHtml += '
';
$(inputParametersDiv).html(parameterTableHtml);
// set the initial values for parameters
for (var i in listOfParameters)
{
parameterTableHtml = parameterTableHtml + ' ';
switch(listOfParameters[i].displayType)
{
case "select":
break;
case "date":
$('#' + listOfParameters[i].variable).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd'
});
var tmpDate;
switch(listOfParameters[i].defaultVal)
{
case "today":
tmpDate = setCurrentDate();
break;
case "fromstart":
tmpDate = "1900-01-01";
break;
default:
tmpDate = listOfParameters[i].defaultVal;
}
$('#' + listOfParameters[i].variable).val(tmpDate);
break;
default:
alert("System Error: Unknown Display Type: " + listOfParameters[i].displayType);
return 1;
}
}
hideAllParameters();
// Populate all select (drop down list box) parameters
for (var i in listOfParameters)
{
if (listOfParameters[i].displayType == 'select')
{
var selectOne = 'false';
var selectAll = 'false';
if (listOfParameters[i].selectOne == 'Y') selectOne = 'true';
if (listOfParameters[i].selectAll == 'Y') selectAll = 'true';
eval(generateSelectSuccessVariable(listOfParameters[i].name, listOfParameters[i].label, selectOne, selectAll));
getReportData(listOfParameters[i].name, {}, selectSuccess, true)
}
}
}
function initialiseSuccessFunctionVariables(){
var tmpRow;
setupParameterListSuccess = function(data, textStatus, jqXHR){
showMsgE("In setupParameterListSuccess ");
for (var i in data.data )
{
tmpRow = {
name: data.data[i].row[0],
variable: data.data[i].row[1],
label: data.data[i].row[2],
displayType: data.data[i].row[3],
formatType: data.data[i].row[4],
defaultVal: data.data[i].row[5],
selectOne: data.data[i].row[6],
selectAll: data.data[i].row[7]
}
listOfParameters.push(tmpRow);
}
initialiseAllParameters();
};
setupReportListSuccess = function(data, textStatus, jqXHR){
showMsgE("In setupReportListSuccess");
getReportData('FullParameterList', {}, setupParameterListSuccess, true);
var prevId = -1;
var currId;
var tmpParameters;
for (var i in data.data ) // create reportListing array
{
currId = data.data[i].row[0]
if (currId != prevId)
{
tmpParameters = [];
if (!(data.data[i].row[5] == null))
{
tmpParam = [];
tmpParam.push(data.data[i].row[6]);
tmpParam.push(data.data[i].row[7]);
tmpParameters.push(tmpParam);
}
tmpRow = {
id: data.data[i].row[0],
name: data.data[i].row[1],
type: data.data[i].row[2],
subtype: data.data[i].row[3],
category: data.data[i].row[4],
parameters: tmpParameters
}
reportListing.push(tmpRow);
prevId = currId;
}
else
{
tmpParam = [];
tmpParam.push(data.data[i].row[6]);
tmpParam.push(data.data[i].row[7]);
reportListing[(reportListing.length - 1)].parameters.push(tmpParam);
}
}
var reportSelectData = [];
for (var i in reportListing)
{
reportSelectData.push({id: reportListing[i].name, name: reportListing[i].name});
}
var listOfReportsTag = {divName: reportsListDiv,
label: reportsListDivLabel,
selectOnClick: 'jQuery.stretchyReporting.newReportSelected(options[selectedIndex].value)',
selectData: reportSelectData
}
makeSelectTag(listOfReportsTag, true, false, true);
};
}
function copyXLSon() {
showMsg("Turning them on");
$('#ToolTables_RshowTable_0').css('display', 'inline');
$('#ToolTables_RshowTable_1').css('display', 'inline');
ttInstances = TableTools.fnGetMasters();
for (i in ttInstances) {
ttInstances[i].that.fnResizeButtons();
}
filteredCopyXLSon = true;
}
function copyXLSoff() {
showMsg("Turning them off");
$('#ToolTables_RshowTable_0').css('display', 'none');
$('#ToolTables_RshowTable_1').css('display', 'none');
filteredCopyXLSon = false;
}
function applyFilterRules() {
if (maxRowsForCopyandXLS >= fnRecordsDisplay())
{
showMsg("Max: " + maxRowsForCopyandXLS + " >= " + fnRecordsDisplay());
if (filteredCopyXLSon == true) showMsg("copy xls on - so no need to do anything")
else
{
showMsg("copy xls off - so can turn back on");
copyXLSon();
oTable.fnDraw();
}
}
else
{
showMsg("Max: " + maxRowsForCopyandXLS + " < " + fnRecordsDisplay());
if (filteredCopyXLSon == true)
{
showMsg("copy xls on - so have to turn off");
copyXLSoff();
oTable.fnDraw();
}
else showMsg("copy xls off - so no need to do anything");
}
}
function initialiseDataTableDef() {
dataTableDef = {
// "sDom": 'lfTip<"top"<"clear">>rtlfTip<"bottom"<"clear">>',
"sDom": 'lfTip<"top"<"clear">>rt',
"oTableTools": {
"aButtons": [{ "sExtends": "copy",
"sButtonText": doI18N("Copy to Clipboard")
},
{ "sExtends": "xls",
"sButtonText": doI18N("Save to CSV")
}
// {
// "sExtends": "print",
// "sButtonText": doI18N("Print")
// }
],
"sSwfPath": resValue + "DataTables-1.8.2/extras/TableTools/media/swf/copy_cvs_xls.swf"
},
"aaData": [],
"aoColumns": [],
"sPaginationType": "full_numbers",
"bDeferRender": true,
"bProcessing": true,
"aLengthMenu": [[5, 10, 25, 50, 100, -1], [5, 10, 25, 50, 100, "All"]]
// "bJQueryUI": true
}
}
function generateSelectSuccessVariable(paramName, paramLabel, selectOne, selectAll) {
return 'var selectSuccess = function(data, textStatus,jqXHR){' +
' var selectData = [];' +
' for (var i in data.data )' +
' {' +
'selectData.push({id: data.data[i].row[0], name: data.data[i].row[1]});' +
' }' +
" selectTagParams = {divName: '#" + paramName + "'," +
"label: '" + paramLabel + "'," +
"selectOnClick: '$.stretchyReporting.nothingCallback()'," +
"selectData: selectData " +
'};' +
' makeSelectTag(selectTagParams, ' + selectOne + ', ' + selectAll + ', false);' +
'};';
}
function createChart(theData) {
RData = new google.visualization.DataTable();
RData.addColumn('string', dataTableDef.aoColumns[0].sTitle);
RData.addColumn('number', dataTableDef.aoColumns[1].sTitle);
RData.addRows(dataTableDef.aaData.length);
var ii = 0;
var numberData;
var dblQuotePos;
for (var i in dataTableDef.aaData)
{
RData.setValue(ii, 0, dataTableDef.aaData[i][0]);
if (dataTableDef.aoColumns[1].sType == "title-numeric" && dataTableDef.aaData[i][1].substr(0, 11) == ' ' + "";
else
{
convNum = formatNumber(parseFloat(tmpVal));
tmpVal = ' ' + convNum;
}
break;
default:
alert("System Error - Type not Found: " + tableColumns[j].sType);
}
tmpArr.push(tmpVal);
}
tableData.push(tmpArr);
}
maxRowsForCopyandXLS = Math.round(tableSizeLimit / (tableColumns.length));
showMsg("Setting at Start maxRowsForCopyandXLS: " + maxRowsForCopyandXLS );
filteredCopyXLSon = true;
dataTableDef.aaData = tableData;
dataTableDef.aoColumns= tableColumns;
dataTableDef.aaSorting = [];
dataTableDef.fnDrawCallback = function() {
showMsg( 'DataTables has redrawn the table' );
if (isNewTable == false) applyFilterRules()
else isNewTable = false;
};
}
function convertCRtoBR(str) {
return str.replace(/(\r\n|[\r\n])/g, " ");
}
function showTableReport() {
isNewTable = true;
$('#StretchyReportOutput').html( '' );
oTable = $('#RshowTable').dataTable(dataTableDef);
oSettings = oTable.fnSettings();
showMsg("1st recs displayed is: " + fnRecordsDisplay());
applyFilterRules();
}
function showChartReport(rptSubType) {
/*
* $('#StretchyReportOutput').html( '' );
* $('#RshowTable').dataTable(dataTableDef);
*/
$('#StretchyReportOutput').html( '' );
var options;
var Rchart;
switch(rptSubType)
{
case "Pie":
options = {
legend: 'right', is3D: true,
width: 1000, height: 600
// chartArea: {left:0,top:0, width:"100%",height:"100%"}
};
Rchart = new google.visualization.PieChart(document.getElementById('RshowChart'));
Rchart.draw(RData, options);
break;
case "Bar":
options = {
width: 1000, height: 600
// vAxis: {title: 'xxxxxxx', titleTextStyle: {color:
// 'red'}}
// chartArea: {left:0,top:0, width:"100%",height:"100%"}
};
Rchart = new google.visualization.BarChart(document.getElementById('RshowChart'));
Rchart.draw(RData, options);
break;
default:
alert("System Error: Unknown Chart Type: " + rptSubType);
}
/*
* var Rchart = new
* google.visualization.PieChart(document.getElementById('RshowChart'));
* Rchart.draw(RData, {legend: 'right', is3D: true, width: 400, height: 500,
* chartArea: {left:0,top:0, width:"100%",height:"100%"}});
*/
/*
* var chartCategories = []; for (var i in dataTableDef.aaData) {
* chartCategories.push(dataTableDef.aaData[i][0]); }
*
* var chartSeries = [];
*
* for (var i in dataTableDef.aaData) { chartSeries.push({data:
* dataTableDef.aaData[i][1]}); }
*
*
* var Rchart = new Highcharts.Chart({ chart: { renderTo: 'RshowChart',
* defaultSeriesType: 'bar' }, title: { text: 'Historic World Population by
* Region' }, xAxis: { categories: chartCategories, title: { text: null } },
* yAxis: { min: -5000000, title: { text: 'Population (millions)', align: 'high' } },
* tooltip: { formatter: function() { return ''+ this.series.name +': '+ this.y +'
* millions'; } }, plotOptions: { bar: { dataLabels: { enabled: true } } },
* legend: { layout: 'vertical', align: 'right', verticalAlign: 'top', x: -100,
* y: 100, floating: true, borderWidth: 1, backgroundColor: '#FFFFFF', shadow:
* true }, credits: { enabled: false }, series: chartSeries });
*/
}
function getReportData(rptName, inParams, successFunction, isParameterType) {
if (isAuthRequest == true) getReportDataAuth(rptName, inParams, successFunction, isParameterType)
else getReportDataNoAuth(rptName, inParams, successFunction, isParameterType);
}
function getReportDataAuth(rptName, inParams, successFunction, isParameterType) {
alert("needs fixing up, dont rely on data")
return
var inQueryParameters = {};
for (var i in inParams ) inQueryParameters["R_" + i] = inParams[i];
if (rptDB > "") inQueryParameters["R_rptDB"] = rptDB;
// OAuthSimple().reset();
// var OAuthProcess = (new OAuthSimple()).sign({
// path : RESTUrl,
// parameters : inQueryParameters,
// signatures : {
// 'consumer_key' : apiKey,
// 'shared_secret' : sharedSecret,
// 'access_token' : accessToken,
// 'access_secret' : tokenSecret
// }
// });
showMsgE("getReportData IS Auth: " + inQueryParameters);
$.ajax({
url: RESTUrl,
type:'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
crossDomain: false,
cache: false,
beforeSend: function( xhr ) {
xhr.setRequestHeader("Accept", "application/json");
console.log("base64: " + basicAuthKey);
xhr.setRequestHeader("Authorization", "Basic " + basicAuthKey);
},
success: successFunction,
error:function(jqXHR, textStatus, errorThrown){
showMsgE("getReportData IS Auth Error: ");
var jsonValue = jQuery.parseJSON(jqXHR.responseText);
alert("Response Text: " + jqXHR.responseText + " Text Status: " + textStatus);
}
});
}
function buildReportParms(inParams) {
var paramCount = 1;
var reportParams = "";
for (var i in inParams )
{
if (paramCount > 1) reportParams += "&"
reportParams += encodeURIComponent("R_" + i) + "=" + encodeURIComponent(inParams[i]);
paramCount = paramCount + 1;
}
if (rptDB > "")
{
if (paramCount > 1) reportParams += "&"
reportParams = encodeURIComponent("R_rptDB") + "=" + encodeURIComponent(rptDB);
}
return reportParams
}
function getReportDataNoAuth(rptName, inParams, successFunction, isParameterType) {
var inQueryParameters = buildReportParms(inParams);
if (isParameterType == true)
{
if (inQueryParameters > "") inQueryParameters += "¶meterType=true"
else inQueryParameters = "parameterType=true"
}
showMsgE("getReportDataNoAuth: " + inQueryParameters);
$.ajax({
url: RESTUrl + "/" + rptName,
type:'GET',
dataType: 'json',
data: inQueryParameters,
contentType: "application/json; charset=utf-8",
crossDomain: false,
cache: false,
beforeSend : function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
console.log("base64: " + basicAuthKey);
xhr.setRequestHeader("Authorization", "Basic " + basicAuthKey);
},
success: successFunction,
error:function(jqXHR, textStatus, errorThrown){
showMsgE("getReportDataNoAuth: ");
alert("Response Text: " + jqXHR.responseText + " Text Status: " + textStatus + " Error Thrown: " + errorThrown);
var jsonValue = jQuery.parseJSON(jqXHR.responseText);
alert("Last Alert - " + jsonValue.value + "for " + jsonValue.field + " : " + jsonValue.code);
}
});
}
function getExportCSV(rptName, inParams, isParameterType) {
var inQueryParameters = buildReportParms(inParams);
if (inQueryParameters > "") inQueryParameters = "?" + inQueryParameters + "&exportCSV=true"
else inQueryParameters = "?exportCSV=true";
if (isParameterType == true) inQueryParameters += "¶meterType=true";
var fullExportUrl = RESTUrl + "/" + rptName + inQueryParameters;
showMsg("full export url: " + fullExportUrl);
var loadHTML = '';
$('#StretchyReportOutput').html(loadHTML);
}
function getPentahoReport(rptName, inParams) {
//todo
var currentReportName = inparams.name; //remember to include this when doing pentaho example
var inQueryParameters = "?output-type=" + $('#rptOutputType option:selected').val();
// var paramCount = 1;
for (var i in inParams )
{
// if (paramCount > 1) inQueryParameters += "&"
// else inQueryParameters += "?";
inQueryParameters += "&" + encodeURIComponent(i) + "=" + encodeURIComponent(inParams[i]);
// paramCount = paramCount + 1;
}
var fullReportUrl = pentahoUrl + inQueryParameters;
showMsg("full pentaho url: " + fullReportUrl);
var loadHTML = '';
$('#StretchyReportOutput').html(loadHTML);
}
function clearLoadingImg() {
$('#rptLoadingFrame').css("background", "");
}
function parameterValidationErrors(reportParams)
{
var tmpStartDate = "";
var tmpEndDate = "";
for (var i in reportParams)
{
// alert("rpt param:" + reportParams[i][1]);
var paramDetails = getParameterDetailsUsingName(reportParams[i][1]);
switch(paramDetails.displayType)
{
case "select":
var selectedVal = $('#' + paramDetails.name + ' select option:selected').val();
if (selectedVal == 0)
{
alert(doI18N("appropriateValues"));
return 1;
}
break;
case "date":
var tmpDate = $('#' + paramDetails.variable).val();
if (!(tmpDate > ""))
{
alert(doI18N("appropriateDateValues"));
return 1;
}
if (invalidDate(tmpDate) == true)
{
alert(doI18N("invalidDate") + " " + tmpDate);
return 1;
}
if (paramDetails.variable == "startDate") tmpStartDate = tmpDate;
if (paramDetails.variable == "endDate") tmpEndDate = tmpDate;
break;
default:
alert("System Error: Unknown Display Type: " + paramDetails.displayType);
return 1;
}
}
if (tmpStartDate > "" && tmpEndDate > "")
{
if (tmpStartDate > tmpEndDate)
{
alert(doI18N("startAfterEndDate"));
return 1;
}
}
return 0;
}
function getParameterDetailsUsingName(inputParam) {
for (var i in listOfParameters )
{
if (listOfParameters[i].name == inputParam)
{
return listOfParameters[i];
}
}
alert("System Error - Parameter not Found: " + inputParam);
return {name: "unknownInputField"};
}
function initI18N(lang) {
if (I18N_Needed == "Y")
{
var Ilang = lang;
if (Ilang == "") Ilang = $.i18n.browserLang();
jQuery.i18n.properties({
name:'Messages',
path: bundleDir,
mode:'map',
cache: true,
language: Ilang,
callback: function() {
}
});
}
}
function changeLanguage(newLanguage) {
initI18N(newLanguage);
// run and clear buttons
$(runReportDiv).button({ label: doI18N("rpt_run") });
$(clearReportDiv).button({ label: doI18N("rpt_clear") });
// report listing
$(reportsListDiv + ' div').text(doI18N(reportsListDivLabel));
$(reportsListDiv + ' option').each(function(index) {
if ($(this).val() == "0") $(this).text(doI18N('rpt_select_one'))
else
{
if ($(this).val() == "-1") $(this).text(doI18N('rpt_select_all'))
else
{
$(this).text(doI18N($(this).val()))
}
}
});
// parameter labels
for (var i in listOfParameters)
{
$('#' + listOfParameters[i].name + ' div').text(doI18N(listOfParameters[i].label));
// parameter options select one/all
if (listOfParameters[i].displayType == 'select')
{
$('#' + listOfParameters[i].name + ' option').each(function(index) {
if ($(this).val() == "0") $(this).text(doI18N('rpt_select_one'))
else
{
if ($(this).val() == "-1") $(this).text(doI18N('rpt_select_all'))
}
});
}
}
// Data output (if any)
if ($('#StretchyReportOutput').html() > "" )
{
for (var i in dataTableDef.aoColumns)
{
var tmpval = dataTableDef.aoColumns[i].sTitle ;
dataTableDef.aoColumns[i].sTitle = doI18N(dataTableDef.aoColumns[i].sOriginalHeading);
}
redrawOutput();
}
}
function doI18N(xlateStr, params) {
if (I18N_Needed == "Y")
{
if (highlightMissingXlations == "Y") return jQuery.i18n.prop(xlateStr, params)
else
{
var xlated = jQuery.i18n.prop(xlateStr, params);
if (xlated.substr(0,1) == "[" && xlated.substr(xlated.length - 1, 1) == "]") return xlated.substr(1, xlated.length - 2)
else return xlated;
}
}
else
{
var retStr = xlateStr;
if (retStr == 'rpt_select_one') retStr = 'Select One';
if (retStr == 'rpt_select_all') retStr = 'Select All';
return retStr;
}
}
function changeDecimals(newDecimals) {
decimalsNo = newDecimals;
updateNumberData();
}
function changeSeparator(sepChar, decChar, indFormat) {
separatorChar = sepChar;
decimalChar = decChar;
indianFormat = indFormat;
updateNumberData();
}
function updateNumberData() {
// Data output (if any)
if ($('#StretchyReportOutput').html() > "" )
{
var tmpVal;
var origVal;
var convNum;
for (var i in dataTableDef.aaData )
{
for (var j in dataTableDef.aaData[i])
{
if (dataTableDef.aoColumns[j].sType == "title-numeric")
{
origVal = getOrigTitleNumericValue(dataTableDef.aaData[i][j]);
if (origVal == nullTitleValue) convNum = ""
else convNum = formatNumber(parseFloat(origVal));
dataTableDef.aaData[i][j] = ' ' + convNum;
}
}
}
redrawOutput();
}
}
function redrawOutput() {
clearTheReport();
var reportListingIndex = getReportListingIndexSelectedReport();
switch(reportListing[reportListingIndex].type)
{
case "Table":
showTableReport();
break;
case "Chart":
showChartReport();
case "Pentaho":
break;
default:
alert("System Error: Unknown Report Type: " + reportListing[reportListingIndex].type);
}
enableClearButton();
}
function setTableSizeLimit() {
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ // test for MSIE x.x;
var ieversion=new Number(RegExp.$1) // capture x.x portion and store as
// a number
if (ieversion>=9) return 50000
else return 3000;
}
else return 50000;
}
function showMsg(msg) {
// remove except for testing console.log(msg);
}
function showMsgE(msg) {
// console.log(msg);
}
})(jQuery);