384 lines
9.4 KiB
JavaScript
384 lines
9.4 KiB
JavaScript
var ViewDashboardHelper = function () {
|
|
this.cache = [];
|
|
this.forceRemote=false; //if true, the next call will go to the remote server
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.ReportingPeriodicityEnum = {
|
|
NONE : 0,
|
|
MONTH : 100,
|
|
QUARTER : 200,
|
|
SEMESTER : 300,
|
|
YEAR : 400
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.ReportingIndicatorEnum = {
|
|
PEI : 1010,
|
|
EEI : 1030,
|
|
INBOX_STATUS : 1050
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.date2MysqlString = function (val){
|
|
return val.getFullYear() + '-' + (val.getMonth() + 1) + '-' + val.getDay() ;
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.stringIfNull = function (val){
|
|
if(val === null || val == undefined || val == "?"){
|
|
val = "?";
|
|
} else {
|
|
val = (parseFloat(val)).toFixed(2);
|
|
}
|
|
return val;
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.zeroIfNull = function (val) {
|
|
var retval = 0;
|
|
if(val === null || val === undefined || val === "") {
|
|
retval = 0;
|
|
} else {
|
|
retval = val;
|
|
}
|
|
return retval;
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.labelIfEmpty = function (val){
|
|
if(val === null || val == undefined || val == ""){
|
|
val = "(No Name)";
|
|
} else {
|
|
val = val
|
|
}
|
|
return val;
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.assert = function (condition, message) {
|
|
if (!condition) {
|
|
message = message || "Assertion failed";
|
|
if (typeof Error !== "undefined") {
|
|
throw new Error(message);
|
|
}
|
|
throw message; // Fallback
|
|
}
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.fillSelectWithOptions = function ($select, options, selectedValue) {
|
|
$select.empty(); // remove old options
|
|
$.each(options, function(index, option) {
|
|
$select.append($("<option></option>")
|
|
.attr("value", option.value).text(option.label));
|
|
});
|
|
$select.val(selectedValue);
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.setVisibility = function ($element, isVisible) {
|
|
$element.css('visibility', (isVisible ? 'visible' : 'hidden'));
|
|
$element.css('display', (isVisible ? 'inline' : 'none'));
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.truncateString = function (string, len) {
|
|
this.assert(len != null && len > 0, "Var len not valid. String must by truncated to a positive non zero length.");
|
|
this.assert(string != null, "var string can't be null.");
|
|
|
|
var retval = "";
|
|
if(string.length > len){
|
|
retval = string.substring(0, len ) + "...";
|
|
}
|
|
else{
|
|
retval = string;
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.getKeyValue = function (obj, key, undefined) {
|
|
var reg = /\./gi
|
|
, subKey
|
|
, keys
|
|
, context
|
|
, x
|
|
;
|
|
|
|
if (reg.test(key)) {
|
|
keys = key.split(reg);
|
|
context = obj;
|
|
|
|
for (x = 0; x < keys.length; x++) {
|
|
subKey = keys[x];
|
|
|
|
//the values of all keys except for
|
|
//the last one should be objects
|
|
if (x < keys.length -1) {
|
|
if (!context.hasOwnProperty(subKey)) {
|
|
return undefined;
|
|
}
|
|
|
|
context = context[subKey];
|
|
}
|
|
else {
|
|
return context[subKey];
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return obj[key];
|
|
}
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.setKeyValue = function (obj, key, value) {
|
|
var reg = /\./gi
|
|
, subKey
|
|
, keys
|
|
, context
|
|
, x
|
|
;
|
|
|
|
//check to see if we need to process
|
|
//multiple levels of objects
|
|
if (reg.test(key)) {
|
|
keys = key.split(reg);
|
|
context = obj;
|
|
|
|
for (x = 0; x < keys.length; x++) {
|
|
subKey = keys[x];
|
|
|
|
//the values of all keys except for
|
|
//the last one should be objects
|
|
if (x < keys.length -1) {
|
|
if (!context[subKey]) {
|
|
context[subKey] = {};
|
|
}
|
|
|
|
context = context[subKey];
|
|
}
|
|
else {
|
|
context[subKey] = value;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
obj[key] = value;
|
|
}
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.merge = function (objFrom, objTo, propMap) {
|
|
var toKey
|
|
, fromKey
|
|
, x
|
|
, value
|
|
, def
|
|
, transform
|
|
, key
|
|
, keyIsArray
|
|
;
|
|
|
|
if (!objTo) {
|
|
objTo = {};
|
|
}
|
|
|
|
for(fromKey in propMap) {
|
|
if (propMap.hasOwnProperty(fromKey)) {
|
|
toKey = propMap[fromKey];
|
|
|
|
//force toKey to an array of toKeys
|
|
//if (!Array.isArray(toKey)) {
|
|
if (!$.isArray(toKey)) {
|
|
toKey = [toKey];
|
|
}
|
|
|
|
for(x = 0; x < toKey.length; x++) {
|
|
def = null;
|
|
transform = null;
|
|
key = toKey[x];
|
|
//keyIsArray = Array.isArray(key);
|
|
keyIsArray = $.isArray(key);
|
|
|
|
if (typeof(key) === "object" && !keyIsArray) {
|
|
//def = (key.default || null);
|
|
def = null;
|
|
transform = key.transform || null;
|
|
key = key.key;
|
|
//evaluate if the new key is an array
|
|
// keyIsArray = Array.isArray(key);
|
|
keyIsArray = $.isArray(key);
|
|
}
|
|
|
|
if (keyIsArray) {
|
|
//key[toKeyName,transform,default]
|
|
def = key[2] || null;
|
|
transform = key[1] || null;
|
|
key = key[0];
|
|
}
|
|
|
|
if (def && typeof(def) === "function" ) {
|
|
def = def(objFrom, objTo);
|
|
}
|
|
|
|
value = this.getKeyValue(objFrom, fromKey);
|
|
|
|
if (transform) {
|
|
value = transform(value, objFrom, objTo);
|
|
}
|
|
|
|
if (typeof value !== 'undefined') {
|
|
this.setKeyValue(objTo, key, value);
|
|
}
|
|
else if (typeof def !== 'undefined') {
|
|
this.setKeyValue(objTo, key, def);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return objTo;
|
|
};
|
|
|
|
|
|
ViewDashboardHelper.prototype.getJson = function (endPoint, baseUrl, oauthToken) {
|
|
var that = this;
|
|
var callUrl = baseUrl + endPoint
|
|
var requestFinished = $.Deferred();
|
|
var itemInCache = that.getCacheItem(endPoint);
|
|
|
|
if (itemInCache != null && !this.forceRemote) {
|
|
that.forceRemote = false;
|
|
requestFinished.resolve(itemInCache);
|
|
return requestFinished.promise();
|
|
}
|
|
else {
|
|
return $.ajax({
|
|
url: callUrl,
|
|
type: 'GET',
|
|
datatype: 'json',
|
|
success: function (data) {
|
|
that.forceRemote = false;
|
|
requestFinished.resolve(data);
|
|
that.putInCache(endPoint, data);
|
|
// return requestFinished.promise();
|
|
},
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(callUrl + ' -- ' + errorThrown);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + oauthToken);
|
|
//xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.postJson = function (endPoint, data, baseUrl, oauthToken) {
|
|
var that = this;
|
|
return $.ajax({
|
|
url : baseUrl + endPoint,
|
|
type : 'POST',
|
|
datatype : 'json',
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(errorThrown);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + oauthToken);
|
|
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
}).fail(function () {
|
|
throw new Error('Fail server');
|
|
});
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.putJson = function (endPoint, data, baseUrl, oauthToken) {
|
|
var that = this;
|
|
return $.ajax({
|
|
url : baseUrl + endPoint,
|
|
type : 'PUT',
|
|
datatype : 'json',
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(errorThrown);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + oauthToken);
|
|
//xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
}).fail(function () {
|
|
throw new Error('Fail server');
|
|
});
|
|
};
|
|
|
|
ViewDashboardHelper.prototype.getCacheItem = function (endPoint) {
|
|
var retval = null;
|
|
$.each(this.cache, function(index, objectItem) {
|
|
if (objectItem.key == endPoint) {
|
|
retval = objectItem.value;
|
|
}
|
|
});
|
|
return retval;
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.putInCache = function (endPoint, data) {
|
|
var cacheItem = this.getCacheItem(endPoint);
|
|
if (cacheItem == null) {
|
|
this.cache.push ({ key: endPoint, value:data });
|
|
}
|
|
else {
|
|
cacheItem.value = data;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
ViewDashboardHelper.prototype.periodInitDate = function (periodicity, period, year) {
|
|
var retval = null;
|
|
switch (periodicity * 1) {
|
|
case this.ReportingPeriodicityEnum.MONTH:
|
|
retval = new Date(year, period - 1, 1);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.QUARTER:
|
|
retval = new Date(year, 3 * (period-1), 1);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.SEMESTER:
|
|
retval = new Date(year, 6 * (period-1), 1);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.YEAR:
|
|
retval = new Date(year, 0, 1);
|
|
break;
|
|
}
|
|
if (retval == null) {
|
|
throw new Error("The periodicity " + periodicity + " is not supported.");
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
ViewDashboardHelper.prototype.periodEndDate = function (periodicity, period, year) {
|
|
var retval = null;
|
|
switch (periodicity * 1) {
|
|
case this.ReportingPeriodicityEnum.MONTH:
|
|
retval = new Date(year, period, 0, 23,59,59);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.QUARTER:
|
|
retval = new Date(year, 3 * (period), 0, 23, 59, 59);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.SEMESTER:
|
|
retval = new Date(year, 6 * (period), 0, 23, 59, 59);
|
|
break;
|
|
case this.ReportingPeriodicityEnum.YEAR:
|
|
retval = new Date(year, 11, 31, 23, 59, 59);
|
|
break;
|
|
}
|
|
if (retval == null) {
|
|
throw new Error("The periodicity " + periodicity + " is not supported.");
|
|
}
|
|
return retval;
|
|
|
|
}
|
|
|
|
|
|
|
|
ViewDashboardHelper.prototype.unescape = function (string) {
|
|
var temp = document.createElement("div");
|
|
temp.innerHTML = string;
|
|
var result = temp.childNodes[0].nodeValue;
|
|
temp.removeChild(temp.firstChild);
|
|
return result;
|
|
}
|
|
|
|
|