ngx-academia-uniandes-library
Version:
This library is used for Academia-Uniandes system.
357 lines • 15.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = require("@angular/core");
var constants_1 = require("./constants");
var md5_1 = require("ts-md5/dist/md5");
var service_locator_1 = require("../service-locator");
var UtilsService = /** @class */ (function () {
function UtilsService(mainLocator) {
this.mainLocator = mainLocator;
this.isStringArray = function (test) {
return Array.isArray(test) && test.every(function (value) { return typeof value === 'string'; });
};
}
UtilsService.prototype.clearUndefinedProperties = function (obj) {
Object.keys(obj).forEach(function (key) { return (obj[key] === undefined || obj[key] === '' || obj[key] === null) && delete obj[key]; });
};
UtilsService.prototype.clearUndefinedValuesInArray = function (list) {
return list = list.map(function (elm) {
if (!elm) {
list.splice(list.indexOf(elm), 1);
}
});
};
UtilsService.prototype.compareUrlWithRegx = function (url, regExp) {
var resultMatch = url.match(regExp);
return resultMatch ? true : false;
};
UtilsService.prototype.isAcademiaPhdStudentsListUrl = function (url) {
return this.compareUrlWithRegx(url, constants_1.PHDSTUDENTLIST_ROUTE);
};
UtilsService.prototype.isAcademiaPhdStudentsDetailUrl = function (url) {
return this.compareUrlWithRegx(url, constants_1.PHDSTUDENTDETAIL_ROUTE);
};
UtilsService.prototype.isAcademiaAllStudentsListUrl = function (url) {
return this.compareUrlWithRegx(url, constants_1.ALLSTUDENTLIST_ROUTE);
};
UtilsService.prototype.isAcademiaAllStudentsDetailUrl = function (url) {
return this.compareUrlWithRegx(url, constants_1.ALLSTUDENTDETAIL_ROUTE);
};
/**
* Create MD5 hash
* @param value
*/
/**
* Create MD5 hash
* @param value
*/
UtilsService.prototype.generateMd5 = /**
* Create MD5 hash
* @param value
*/
function (value) {
var md5 = md5_1.Md5.hashAsciiStr(value);
return md5.toString();
};
/**
* Get Url Report
* @param modelData
* @Return url report used in browser
*/
/**
* Get Url Report
* @param modelData
* @Return url report used in browser
*/
UtilsService.prototype.getUrlReport = /**
* Get Url Report
* @param modelData
* @Return url report used in browser
*/
function (modelData) {
modelData.currentDate = this.getDateForUrl();
var keyToHash = this.normalizedParamsToHash(Object.assign({}, modelData));
var hash = this.generateMd5(keyToHash);
var params = this.setParams(Object.assign({}, modelData), hash);
return this.mainLocator.getBirtUrl() + '?' + this.normalizedRemoveAccents(params);
};
/**
* Show Report in new window
* @param modelData
*/
/**
* Show Report in new window
* @param modelData
*/
UtilsService.prototype.callGenerateReport = /**
* Show Report in new window
* @param modelData
*/
function (modelData) {
var params = this.getUrlReport(modelData);
window.open(params, constants_1.LIVEMATCHES, constants_1.WINDOW_CONFIGURATION);
};
/**
* Normalized Params to Hash
* @param modelData
*/
/**
* Normalized Params to Hash
* @param modelData
*/
UtilsService.prototype.normalizedParamsToHash = /**
* Normalized Params to Hash
* @param modelData
*/
function (modelData) {
var _this = this;
var query = new Map();
var queryKeysAux = [];
var queryKeys = [];
var sortParamsValues = [];
var phDStudentStatus = false;
if (modelData.searchParams) {
this.clearUndefinedProperties(modelData.searchParams);
Object.keys(modelData.searchParams).forEach(function (key) {
if (key === 'phDStudentStatus') {
phDStudentStatus = true;
if (modelData.searchParams[key].length < constants_1.ALL_STATES_NUMBER) {
query.set('hasState', 'select');
}
else {
query.set('hasState', 'all');
}
query.set(key, modelData.searchParams[key]);
}
else if (key === 'searchParams') {
Object.keys(modelData.searchParams[key]).forEach(function (key2) {
if (modelData.searchParams[key][key2] instanceof Array || Array.isArray(modelData.searchParams[key][key2])) {
modelData.searchParams[key][key2].sort(function (a, b) { return a - b; });
modelData.searchParams[key][key2].forEach(function (element) {
queryKeysAux.push(key2 + ':' + _this.normalizedAfterStringfy(JSON.stringify(element)));
});
}
else {
queryKeysAux.push(key2 + ':' + _this.normalizedAfterStringfy(JSON.stringify(modelData.searchParams[key][key2])));
}
});
query.set(key, "{" + JSON.stringify(queryKeysAux).toString().replace(/['"\[\]]+/g, '') + '}');
//Special report Handle rpt_prods_012
}
else if ((key === 'dependencies' || key === 'categories') && (modelData.reportName === "rpt_prods_012.rptdesign")) {
var rArray = Object.assign([], modelData.searchParams[key]);
query.set(key, JSON.stringify(rArray.reverse()).replace(/['",\[\]]+/g, ''));
}
else if (key === 'facultyType' || key === 'researchGroupCategory') {
var rArray = Object.assign([], modelData.searchParams[key]);
query.set(key, JSON.stringify(rArray.reverse()).replace(/['",\[\]]+/g, ''));
}
else if (key === 'productFormat') {
if (modelData.searchParams[key] instanceof Array || Array.isArray(modelData.searchParams[key])) {
modelData.searchParams[key].sort(function (a, b) { return parseInt(b.split(";")[0]) - parseInt(a.split(";")[0]); }); //mayor-menor
query.set(key, modelData.searchParams[key].join(""));
}
else {
query.set(key, modelData.searchParams[key]);
}
}
else {
query.set(key, modelData.searchParams[key]);
}
});
}
if (modelData.optionalFields) {
this.clearUndefinedProperties(modelData.optionalFields);
Object.keys(modelData.optionalFields).forEach(function (key) { return query.set(key, modelData.optionalFields[key]); });
}
query.set(constants_1.UR_PARAM, modelData.currentUser.userName);
query.set(constants_1.REPORT_PARAM, modelData.reportName);
query.forEach(function (value, key) {
queryKeys.push(key);
});
queryKeys.sort();
sortParamsValues = this.getSortParamsValues(queryKeys, query);
sortParamsValues.push(modelData.currentDate);
var concatSortParams = "";
sortParamsValues.forEach(function (element) {
concatSortParams += element;
});
if (phDStudentStatus) {
concatSortParams = concatSortParams.replace(/['",\[\]]+/g, '');
}
return this.normalizedRemoveAccents(concatSortParams);
};
UtilsService.prototype.normalizedIfArrayValues = function (value) {
if (value instanceof Array) {
return value.join("");
}
else {
if (value) {
return value.toString();
}
}
};
UtilsService.prototype.setParams = function (modelData, hash) {
var _this = this;
var paramsArray = [];
var paramsArrayAux = [];
if (modelData) {
paramsArray.push(constants_1.REPORT_PARAM + '=' + modelData.reportName);
if (modelData.currentUser) {
paramsArray.push(constants_1.UR_PARAM + '=' + modelData.currentUser.userName);
}
if (modelData.searchParams) {
Object.keys(modelData.searchParams).forEach(function (key) {
if (key === 'phDStudentStatus') {
if (modelData.searchParams[key].length < constants_1.ALL_STATES_NUMBER) {
paramsArray.push('hasState=select');
}
else {
paramsArray.push('hasState=all');
}
modelData.searchParams[key].forEach(function (element) {
paramsArray.push(constants_1.PHD_STATUS + '=' + element);
});
}
else if (modelData.searchParams[key] instanceof Array || Array.isArray(modelData.searchParams[key])) {
if (key === 'productFormat') {
modelData.searchParams[key].sort(function (a, b) { return parseInt(a.split(";")[0]) - parseInt(b.split(";")[0]); });
}
modelData.searchParams[key].forEach(function (element) {
paramsArray.push(key + '=' + element);
});
}
else if (key === 'searchParams') {
Object.keys(modelData.searchParams[key]).forEach(function (key2) {
if (modelData.searchParams[key][key2] instanceof Array || Array.isArray(modelData.searchParams[key][key2])) {
modelData.searchParams[key][key2].sort(function (a, b) { return a - b; });
modelData.searchParams[key][key2].forEach(function (element) {
paramsArrayAux.push(key2 + ':' + _this.normalizedAfterStringfy(JSON.stringify(element)));
});
}
else {
paramsArrayAux.push(key2 + ':' + _this.normalizedAfterStringfy(JSON.stringify(modelData.searchParams[key][key2])));
}
});
paramsArray.push(key + '=' + _this.normalizedAfterStringfy("{" + JSON.stringify(paramsArrayAux).toString().replace(/['"\[\]]+/g, '') + '}'));
}
else {
paramsArray.push(key + '=' + modelData.searchParams[key]);
}
});
}
if (modelData.optionalFields) {
Object.keys(modelData.optionalFields).forEach(function (key) { return paramsArray.push(key + '=' + modelData.optionalFields[key]); });
}
;
if (hash) {
paramsArray.push(constants_1.HASH_PARAM + '=' + hash);
}
paramsArray.push(constants_1.FORMAT_PARAM + '=' + modelData.format);
}
var params = "";
paramsArray.forEach(function (element, index) {
index === 0 ? params += element : params += "&" + element;
});
return params;
};
UtilsService.prototype.getDateForUrl = function () {
var today = new Date();
var month, date = "";
var year = today.getFullYear();
(today.getMonth() + 1) < 10 ? month = "0" + (today.getMonth() + 1).toString() : month = (today.getMonth() + 1).toString();
(today.getDate()) < 10 ? date = "0" + (today.getDate()).toString() : date = (today.getDate()).toString();
var arrayToday = year.toString() + month.toString() + date.toString();
return arrayToday;
};
UtilsService.prototype.getSortParamsValues = function (keysSort, query) {
var _this = this;
var sortParams = [];
keysSort.forEach(function (element) {
if (element === 'phDStudentStatus') {
sortParams.unshift(_this.sortDecreasingArray(query.get(element)));
}
else {
sortParams.unshift(query.get(element));
}
});
return sortParams;
};
UtilsService.prototype.sortDecreasingArray = function (arrayElement) {
var arraySorted = arrayElement.slice();
return arraySorted.sort(function (a, b) { return b - a; });
};
UtilsService.prototype.setIdTypes = function (idsType) {
var re = new RegExp("^(http|https)://", "i");
var newItem;
for (var _i = 0, idsType_1 = idsType; _i < idsType_1.length; _i++) {
var item = idsType_1[_i];
newItem = item.value;
if (!re.test(item.value)) {
switch (item.idType) {
case "LINKEDIN":
newItem = constants_1.LINKEDIN + item.value;
break;
case "FACEBOOK":
newItem = constants_1.FACEBOOK + item.value;
break;
case "TWITTER":
newItem = constants_1.TWITTER + item.value;
break;
case "ORCID":
newItem = constants_1.ORCID + item.value;
break;
case "ACADEMIA_EDU":
newItem = constants_1.ACADEMIA + item.value;
break;
case "RESEARCHGATE":
newItem = constants_1.RESEARCHGATE + item.value;
break;
}
item.value = newItem;
}
}
return idsType;
};
/**
* Delete all quotes from a string
* Change curly brackets by hash
* @param params
*/
/**
* Delete all quotes from a string
* Change curly brackets by hash
* @param params
*/
UtilsService.prototype.normalizedAfterStringfy = /**
* Delete all quotes from a string
* Change curly brackets by hash
* @param params
*/
function (params) {
if (params) {
params = params.replace("{", "%7B");
params = params.replace("}", "%7D");
return params.replace(/['"]+/g, '');
}
};
UtilsService.prototype.normalizedRemoveAccents = function (params) {
var acentos = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç";
var original = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc";
for (var i = 0; i < acentos.length; i++) {
params = params.replace(acentos.charAt(i), original.charAt(i));
}
;
return params;
};
UtilsService.decorators = [
{ type: core_1.Injectable },
];
/** @nocollapse */
UtilsService.ctorParameters = function () { return [
{ type: service_locator_1.ServiceLocator, },
]; };
return UtilsService;
}());
exports.UtilsService = UtilsService;
//# sourceMappingURL=utils.service.js.map