include("lib.prototype"); /** * Namespace Reporte - Define funciones para manejar los reportes. */ var Reporte = { /** * Funcion que genera un reporte. * * @parameter (String) name Nombre de reporte a ser bajado, la extension denota el tipo de reporte */ mostrar: function(name, directDownload, downloadName) { var randomId = 'reporte' + Math.floor(Math.random() * 10001); var fileName; var fileExtension; if (name.indexOf(".") < 0) { fileName = name; fileExtension = ""; } else { fileName = name.split(".")[0]; fileExtension = name.split(".")[1]; } var rParams = $H({ name: fileName, extension: fileExtension, directDownload: directDownload, downloadName: downloadName, randomId: randomId }); if (Mobile) { if ("1" === directDownload) { this.openNewBackgroundTab(c.id, rParams) } else { callback = function(opciones) { new Element('a', { id: 'reportView' + Reporte.getReportName(opciones.params), href: 'reports/' + Reporte.getReportName(opciones.params) + '.pdf' }).fireDOMEvent('click'); }; Enlace.submit(c, { tipo: 'rep', params: rParams, skipFiles: true, callback: callback }, true); } } else { window.open('about:blank', randomId, ''); Enlace.submit(c, { target: randomId, action: "proc/rep/", params: rParams, skipFiles: true }); } }, openNewBackgroundTab: function(context, params) { var reportLink = new Element("a", { id: "reporte" + this.getReportName(params), href: "proc/rep/?_contexto=" + context + "&" + params.toQueryString() }); reportLink.fireDOMEvent('click'); }, /** * Esta función debe ser igual a al metodo del mismo nombre en Report.java * * @param {Map} params mapa de parametros * @returns {String} nombre del reporte */ getReportName: function(params) { return params.get('name') + "_" + params.get('randomId'); } };