501 lines
17 KiB
JavaScript
501 lines
17 KiB
JavaScript
|
|
var getKeyValue =
|
|
function getKeyValue(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];
|
|
}
|
|
};
|
|
|
|
var setKeyValue =
|
|
function setKeyValue(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;
|
|
}
|
|
};
|
|
|
|
var merge =
|
|
function merge(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)) {
|
|
toKey = [toKey];
|
|
}
|
|
|
|
for(x = 0; x < toKey.length; x++) {
|
|
def = null;
|
|
transform = null;
|
|
key = toKey[x];
|
|
keyIsArray = Array.isArray(key);
|
|
|
|
if (typeof(key) === "object" && !keyIsArray) {
|
|
def = key.default || null;
|
|
transform = key.transform || null;
|
|
key = key.key;
|
|
//evaluate if the new key is an array
|
|
keyIsArray = Array.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 = getKeyValue(objFrom, fromKey);
|
|
|
|
if (transform) {
|
|
value = transform(value, objFrom, objTo);
|
|
}
|
|
|
|
if (typeof value !== 'undefined') {
|
|
setKeyValue(objTo, key, value);
|
|
}
|
|
else if (typeof def !== 'undefined') {
|
|
setKeyValue(objTo, key, def);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return objTo;
|
|
};
|
|
|
|
var DashboardProxy = function (oauthToken, server, workspace) {
|
|
this.server = server;
|
|
this.workspace = workspace;
|
|
this.baseUrl = "/api/1.0/" + workspace + "/";
|
|
this.oauthToken = oauthToken;
|
|
};
|
|
|
|
DashboardProxy.prototype.userDashboards = function(userId, callBack) {
|
|
this.getJson('dashboard/ownerData/' + userId,
|
|
function (r) {
|
|
var returnList = [];
|
|
$.each(r, function(index, originalObject) {
|
|
var map = {
|
|
"DAS_TITLE" : "dashName",
|
|
"DAS_UID" : "dashUid",
|
|
"DAS_FAVORITE" : "favorite",
|
|
};
|
|
|
|
var newObject = merge(originalObject, {}, map);
|
|
returnList.push(newObject);
|
|
});
|
|
callBack(returnList);
|
|
});
|
|
};
|
|
|
|
DashboardProxy.prototype.dashboardIndicators = function(dashboardId, initDate, endDate, callBack) {
|
|
this.getJson('dashboard/' + dashboardId + '/indicator?dateIni=' + initDate + '&dateFin=' + endDate,
|
|
function (r) {
|
|
var returnList = [];
|
|
$.each(r, function(index, originalObject) {
|
|
var map = {
|
|
"DAS_IND_UID" : "indUid",
|
|
"DAS_IND_TITLE" : "indName",
|
|
"DAS_IND_TYPE" : "id",
|
|
"DAS_IND_VARIATION" : "comparative",
|
|
"DAS_IND_DIRECTION" : "direction",
|
|
"DAS_IND_VALUE" : "index",
|
|
"DAS_IND_X" : "x",
|
|
"DAS_IND_Y" : "y",
|
|
"DAS_IND_WIDTH" : "width",
|
|
"DAS_IND_HEIGHT" : "height",
|
|
"DAS_UID_PROCESS" : "process"
|
|
};
|
|
|
|
var newObject = merge(originalObject, {}, map);
|
|
//TODO do not burn this value. Data must come from the endpoint
|
|
newObject.favorite = ((returnList.length == 1) ? 1 : 0);
|
|
returnList.push(newObject);
|
|
});
|
|
callBack(returnList);
|
|
});
|
|
};
|
|
|
|
DashboardProxy.prototype.peiData = function(indicatorId, measureDate, compareDate, callBack) {
|
|
var endPoint = "ReportingIndicators/process-efficiency-data?" +
|
|
"indicator_uid=" + indicatorId +
|
|
"&measure_date=" + measureDate +
|
|
"&compare_date=" + compareDate +
|
|
"&language=en";
|
|
this.getJson(endPoint,
|
|
function (r) {
|
|
var graphData = [];
|
|
$.each(r.data, function(index, originalObject) {
|
|
var map = {
|
|
"name" : "datalabel",
|
|
"inefficiencyCost" : "value"
|
|
};
|
|
var newObject = merge(originalObject, {}, map);
|
|
var shortLabel = (newObject.datalabel == null)
|
|
? ""
|
|
: newObject.datalabel.substring(0,15);
|
|
newObject.datalabel = shortLabel;
|
|
graphData.push(newObject);
|
|
});
|
|
r.dataToDraw = graphData.splice(0,7);
|
|
callBack(r);
|
|
});
|
|
}
|
|
|
|
DashboardProxy.prototype.processTasksData = function(process, initDate, endDate, callBack) {
|
|
var endPoint = "ReportingIndicators/process-tasks?" +
|
|
"process_list=" + process +
|
|
"&init_date=" + initDate +
|
|
"&end_date=" + endDate +
|
|
"&language=en";
|
|
this.getJson(endPoint,
|
|
function (r) {
|
|
var graphData = [];
|
|
$.each(r, function(index, originalObject) {
|
|
var map = {
|
|
"name" : "datalabel",
|
|
"averageTime" : "value",
|
|
"deviationTime" : "dispersion"
|
|
};
|
|
var newObject = merge(originalObject, {}, map);
|
|
newObject.datalabel = newObject.datalabel.substring(0, 7);
|
|
graphData.push(newObject);
|
|
});
|
|
var retval = {};
|
|
retval.dataToDraw = graphData.splice(0,7);
|
|
retval.tasksData = r;
|
|
callBack(retval);
|
|
});
|
|
}
|
|
|
|
DashboardProxy.prototype.ueiData = function(indicatorId, measureDate, compareDate, callBack) {
|
|
var endPoint = "ReportingIndicators/employee-efficiency-data?" +
|
|
"indicator_uid=" + indicatorId +
|
|
"&measure_date=" + measureDate +
|
|
"&compare_date=" + compareDate +
|
|
"&language=en";
|
|
this.getJson(endPoint,
|
|
function (r) {
|
|
var graphData = [];
|
|
$.each(r.data, function(index, originalObject) {
|
|
var map = {
|
|
"name" : "datalabel",
|
|
"averageTime" : "value",
|
|
"deviationTime" : "dispersion"
|
|
};
|
|
var newObject = merge(originalObject, {}, map);
|
|
var shortLabel = (newObject.datalabel == null)
|
|
? ""
|
|
: newObject.datalabel.substring(0,7);
|
|
|
|
newObject.datalabel = shortLabel;
|
|
graphData.push(newObject);
|
|
});
|
|
r.dataToDraw = graphData.splice(0,7);
|
|
callBack(r);
|
|
});
|
|
|
|
/*var retval = {
|
|
"efficiencyIndex":1.23,
|
|
"efficiencyVariation":0.23,
|
|
"inefficiencyCost":"$ 20112.23",
|
|
"employeeGroupsDataToDraw":
|
|
[
|
|
{"value":"96", "datalabel":"User 1"},
|
|
{"value":"84", "datalabel":"User 2"},
|
|
{"value":"72", "datalabel":"User 3"},
|
|
{"value":"18", "datalabel":"User 4"},
|
|
{"value":"85", "datalabel":"User 5"}
|
|
],
|
|
|
|
"employeeGroupsData": [
|
|
{"name": "User 1", "efficiencyIndex":"0.45", "innefficiencyCost":"$ 3404"},
|
|
{"name": "User 2", "efficiencyIndex":"1.45", "innefficiencyCost":"$ 1404"},
|
|
{"name": "User 3", "efficiencyIndex":"0.25", "innefficiencyCost":"$ 3304"},
|
|
{"name": "User 4", "efficiencyIndex":"1.95", "innefficiencyCost":"$ 404"},
|
|
{"name": "User 5", "efficiencyIndex":"1.25", "innefficiencyCost":"$ 13404"},
|
|
{"name": "User 6", "efficiencyIndex":"0.75", "innefficiencyCost":"$ 4"}
|
|
]
|
|
}
|
|
return retval;*/
|
|
}
|
|
|
|
DashboardProxy.prototype.userGroupData = function(groupId, initDate, endDate, callBack) {
|
|
var endPoint = "ReportingIndicators/group-employee-data?" +
|
|
"group_uid=" + groupId +
|
|
"&init_date=" + initDate +
|
|
"&end_date=" + endDate +
|
|
"&language=en";
|
|
this.getJson(endPoint,
|
|
function (r) {
|
|
var graphData = [];
|
|
$.each(r, function(index, originalObject) {
|
|
var map = {
|
|
"name" : "datalabel",
|
|
"averageTime" : "value",
|
|
"deviationTime" : "dispersion"
|
|
};
|
|
var newObject = merge(originalObject, {}, map);
|
|
newObject.datalabel = newObject.datalabel.substring(0, 7);
|
|
graphData.push(newObject);
|
|
});
|
|
var retval = {};
|
|
retval.dataToDraw = graphData.splice(0,7);
|
|
retval.tasksData = r;
|
|
callBack(retval);
|
|
});
|
|
}
|
|
|
|
DashboardProxy.prototype.generalIndicatorData = function(indicatorId, initDate, endDate, callBack) {
|
|
var method = "";
|
|
var endPoint = "ReportingIndicators/general-indicator-data?" +
|
|
"indicator_uid=" + indicatorId +
|
|
"&init_date=" + initDate +
|
|
"&end_date=" + endDate +
|
|
"&language=en";
|
|
this.getJson(endPoint,
|
|
function (r) {
|
|
$.each(r.graph1Data, function(index, originalObject) {
|
|
var label = (('YEAR' in originalObject) ? originalObject.YEAR : "") ;
|
|
label += (('MONTH' in originalObject) ? "/" + originalObject.MONTH : "") ;
|
|
label += (('QUARTER' in originalObject) ? "/" + originalObject.QUARTER : "");
|
|
label += (('SEMESTER' in originalObject) ? "/" + originalObject.SEMESTER : "");
|
|
originalObject.datalabel = label;
|
|
});
|
|
|
|
$.each(r.graph2Data, function(index, originalObject) {
|
|
var label = (('YEAR' in originalObject) ? originalObject.YEAR : "") ;
|
|
label += (('MONTH' in originalObject) ? "/" + originalObject.MONTH : "") ;
|
|
label += (('QUARTER' in originalObject) ? "/" + originalObject.QUARTER : "");
|
|
label += (('SEMESTER' in originalObject) ? "/" + originalObject.SEMESTER : "") ;
|
|
originalObject.datalabel = label;
|
|
});
|
|
callBack(r);
|
|
});
|
|
|
|
|
|
|
|
/*var retval = {
|
|
"index" : "23",
|
|
"graph1Data": [
|
|
{"value":"96", "datalabel":"User 1"},
|
|
{"value":"84", "datalabel":"User 2"},
|
|
{"value":"72", "datalabel":"User 3"},
|
|
{"value":"18", "datalabel":"User 4"},
|
|
{"value":"85", "datalabel":"User 5"}
|
|
],
|
|
"graph2Data": [
|
|
{"value":"196", "datalabel":"User 1"},
|
|
{"value":"184", "datalabel":"User 2"},
|
|
{"value":"172", "datalabel":"User 3"},
|
|
{"value":"118", "datalabel":"User 4"},
|
|
{"value":"185", "datalabel":"User 5"}
|
|
]
|
|
}
|
|
return retval;*/
|
|
}
|
|
|
|
DashboardProxy.prototype.userTasksData = function(processId, monthCompare, yearCompare) {
|
|
var retval = {
|
|
"tasksDataToDraw": [
|
|
{"value":"96", "datalabel":"Task 1"},
|
|
{"value":"84", "datalabel":"Task 2"},
|
|
{"value":"72", "datalabel":"Task 3"},
|
|
{"value":"18", "datalabel":"Task 4"},
|
|
{"value":"85", "datalabel":"Task 5"}
|
|
],
|
|
|
|
"tasksData": [
|
|
{"Name": "Task 1", "efficiencyIndex":"0.45", "deviationTime":"0.45", "averageTime":"34 days"},
|
|
{"Name": "Task 2", "efficiencyIndex":"1.45", "deviationTime":"1.45", "averageTime":"14 days"},
|
|
{"Name": "Task 3", "efficiencyIndex":"0.25", "deviationTime":"0.25", "averageTime":"3 days"},
|
|
{"Name": "Task 4", "efficiencyIndex":"1.95", "deviationTime":"1.95", "averageTime":"4 days"},
|
|
{"Name": "Task 5", "efficiencyIndex":"1.25", "deviationTime":"1.25", "averageTime":"14 days"},
|
|
{"Name": "Task 6", "efficiencyIndex":"0.75", "deviationTime":"0.75", "averageTime":"4 days"}
|
|
]
|
|
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
DashboardProxy.prototype.getPositionIndicator = function(callBack) {
|
|
this.getJson('dashboard/config', function (r) {
|
|
var graphData = [];
|
|
$.each(r, function(index, originalObject) {
|
|
var map = {
|
|
"widgetId" : originalObject.widgetId,
|
|
"x" : originalObject.x,
|
|
"y" : originalObject.y,
|
|
"width" : originalObject.width,
|
|
"height" : originalObject.height
|
|
|
|
};
|
|
graphData.push(map);
|
|
});
|
|
callBack(graphData);
|
|
});
|
|
};
|
|
|
|
DashboardProxy.prototype.setPositionIndicator = function(data, callBack) {
|
|
var that = this;
|
|
|
|
this.getPositionIndicator(
|
|
function(response){
|
|
if (response.length != 0) {
|
|
that.putJson('dashboard/config', data, function (r) {
|
|
});
|
|
} else {
|
|
that.postJson('dashboard/config', data, function (r) {
|
|
});
|
|
}
|
|
}
|
|
);
|
|
};
|
|
|
|
|
|
|
|
DashboardProxy.prototype.getJson = function (endPoint, callBack) {
|
|
var that = this;
|
|
var callUrl = this.baseUrl + endPoint
|
|
//For Debug: console.log('Llamando:');
|
|
//For Debug: console.log(callUrl)
|
|
$.ajax({
|
|
url: callUrl,
|
|
type: 'GET',
|
|
datatype: 'json',
|
|
success: function(response) { callBack(response); },
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(textStatus);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + that.oauthToken);
|
|
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
DashboardProxy.prototype.postJson = function (endPoint, data, callBack) {
|
|
var that = this;
|
|
$.ajax({
|
|
url : this.baseUrl + endPoint,
|
|
type : 'POST',
|
|
datatype : 'json',
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
success: function(response) {
|
|
callBack(response);
|
|
},
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(textStatus);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + that.oauthToken);
|
|
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
}).fail(function () {
|
|
throw new Error('Fail server');
|
|
});
|
|
};
|
|
|
|
|
|
DashboardProxy.prototype.putJson = function (endPoint, data, callBack) {
|
|
var that = this;
|
|
$.ajax({
|
|
url : this.baseUrl + endPoint,
|
|
type : 'PUT',
|
|
datatype : 'json',
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
success: function(response) {
|
|
callBack(response);
|
|
},
|
|
error: function(jqXHR, textStatus, errorThrown) {
|
|
throw new Error(textStatus);
|
|
},
|
|
beforeSend: function (xhr) {
|
|
xhr.setRequestHeader('Authorization', 'Bearer ' + that.oauthToken);
|
|
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
|
|
}
|
|
}).fail(function () {
|
|
throw new Error('Fail server');
|
|
});
|
|
};
|