UNPKG

ngx-academia-uniandes-library

Version:

This library is used for Academia-Uniandes system.

357 lines 15.9 kB
"use strict"; 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