var flexygo;
(function (flexygo) {
var ui;
(function (ui) {
var exports;
(function (exports) {
/**
* Create export list menu.
* @function exportListMenu
* @param {string} objectname Object name.
* @param {string} objectwhere Object where.
* @param {defaults} defaults defaults
* @param {JQuery} triggerElement trigger element.
* @returns This function return nothing.
*/
function exportListMenu(objectname, objectwhere, defaults, triggerElement) {
var cntMenu = $('flx-contextmenu')[0];
if (!cntMenu.hideMenu(triggerElement)) {
let menuUl = $('<ul/>');
let collection = new flexygo.obj.Entity('Export_Formats');
let viewResult = collection.getView('Export_Formats_Menu');
if (viewResult.length > 0 && triggerElement.closest('flx-module').find('flx-list')[0]) {
for (let prop of viewResult) {
menuUl.append('<li method="export" format="' + prop['Format'] + '" maxnumber="' + prop['MaxNumber'] + '" data-toggle="tooltip" data-placement="right" title="' + prop['Description'] + '"><span><i class="' + prop['CSSClass'] + '" style="margin-right: 6px;"/>' + prop['Format'].toUpperCase() + '</span></li>');
}
}
menuUl.find('li').off('click').on('click', function (event) {
if ($(this).attr('method') === 'export') {
flexygo.ui.exports.exportList($(this).attr('format'), parseInt($(this).attr('maxnumber')), ($('flx-contextmenu')[0].parent.closest('flx-module').find('flx-list')[0]));
}
});
cntMenu.showMenu(menuUl, triggerElement);
}
}
exports.exportListMenu = exportListMenu;
/**
* Export all registers of flx-list respecting filters, order ...
* @function exportList
* @param {string} format Format file.
* @param {number} maxNumber Maximum number of registers.
* @param {flexygo.ui.wc.FlxListElement} listToExport flx-list to export.
* @returns This function return nothing.
*/
function exportList(format, maxNumber, listToExport) {
try {
if (listToExport) {
let params;
let responseData;
let table;
let tr;
var progressBar;
var progressTimer;
progressBar = Lobibox.progress({
title: flexygo.localization.translate('export.exportinglist'),
closeOnEsc: false,
closeButton: false,
onShow: () => { progressTimer = setInterval(() => progressBar.setProgress(((progressBar.getProgress() + 1 >= 100) ? 0 : progressBar.getProgress() + 1)), 50); },
});
format = (format) ? (format.toLowerCase() === 'xls' || format.toLowerCase() === 'csv' || format.toLowerCase() === 'tsv' || format.toLowerCase() === 'txt' || format.toLowerCase() === 'sql' || format.toLowerCase() === 'json' || format.toLowerCase() === 'xml' || format.toLowerCase() === 'excel' || format.toLowerCase() === 'doc' || format.toLowerCase() === 'pdf') ? format.toLowerCase() : 'excel' : 'excel';
params = {
ObjectName: $(listToExport).attr('ObjectName'),
ObjectWhere: $(listToExport).attr('ObjectWhere'),
ModuleName: listToExport.moduleName,
PageName: flexygo.history.getPageName($(listToExport)),
Page: 0,
AdditionalWhere: listToExport.additionalWhere,
OrderInfo: listToExport.orderObj,
Mode: listToExport.mode,
SearchId: listToExport.activeFilter,
FilterValues: listToExport.filterValues,
TemplateId: listToExport.templateId,
ViewId: listToExport.viewId,
PageSize: maxNumber,
PresetId: listToExport.presetId
};
flexygo.ajax.post('~/api/List', 'GetList', params, (response) => {
if (response.Template.TableData) {
responseData = response.Template.TableData;
$('#exporttable').remove();
table = $('<table id="exporttable"/>').append('<thead/><tbody/>');
tr = $('<tr/>').appendTo(table.find('thead'));
for (let header in responseData[0]) {
if (header.toLowerCase() !== '_objectname' && header.toLowerCase() !== '_objectwhere' && header.toLowerCase() !== '_guid' && header.toLowerCase() !== '_ot') {
tr.append('<th>' + header + '</th>');
}
}
for (let row of responseData) {
tr = $('<tr/>').appendTo(table.find('tbody'));
for (let cell in row) {
if (cell.toLowerCase() !== '_objectname' && cell.toLowerCase() !== '_objectwhere' && cell.toLowerCase() !== '_guid' && cell.toLowerCase() !== '_ot') {
tr.append('<td>' + ((row[cell] === null) ? (format === "pdf" || format === "excel" || format === "xls" || format === "doc") ? '' : null : (format !== "json" && row[cell].toString().startsWith('/Date(') && row[cell].toString().endsWith(')/')) ? moment(row[cell]).format('L') + ((moment(row[cell]).format('HH:mm:ss') !== "00:00:00") ? ' ' + moment(row[cell]).format('LTS') : '') : ((typeof row[cell] == 'number') ? row[cell].toString().replace('.', ',') : row[cell])) + '</td>');
}
}
}
$(document.body).append(table);
$('#exporttable').tableExport({ type: format, fileName: (listToExport.closest('flx-module') && listToExport.closest('flx-module').moduleTitle) ? listToExport.closest('flx-module').moduleTitle : 'Export List' });
$('#exporttable').remove();
progressBar.destroy();
clearInterval(progressTimer);
progressTimer = null;
flexygo.msg.success('export.success');
}
else {
progressBar.destroy();
clearInterval(progressTimer);
progressTimer = null;
flexygo.msg.error('export.error');
}
});
}
else {
flexygo.msg.error('export.error');
}
}
catch (ex) {
progressBar.destroy();
clearInterval(progressTimer);
progressTimer = null;
flexygo.msg.error('export.error');
}
}
exports.exportList = exportList;
/**
* Generates print an report menu
* @function printListMenu
* @param {string} objectname Object name.
* @param {string} objectwhere Object where.
* @param {defaults} defaults defaults
* @param {JQuery} triggerElement trigger element.
* @returns This function return nothing.
*/
function printListMenu(objectname, objectwhere, defaults, triggerElement) {
var cntMenu = $('flx-contextmenu')[0];
if (!cntMenu.hideMenu(triggerElement)) {
let menuUl;
var myObj = $(document).find('flx-nav')[0];
menuUl = $('<ul/>');
menuUl.append('<li method="print" value="page"><span><i class="flx-icon icon-print" style="margin-right: 6px;"/>' + 'Print Page' + '</span></li>');
menuUl.append('<li method="print" value="module"><span><i class="flx-icon icon-print" style="margin-right: 6px;"/>' + 'Print Module' + '</span></li>');
let proc = new flexygo.obj.Entity(objectname, objectwhere).processes();
if (proc.ReportLink && Object.keys(proc.ReportLink.ChildNodes).length > 0) {
if (defaults) {
for (let itm in proc.ReportLink.ChildNodes) {
proc.ReportLink.ChildNodes[itm].ObjectDefaults = defaults;
}
}
menuUl.append('<li class="separator"></li>');
let itm = $('<li method="opensubmenu"><span class="item-closed"><i class="flx-icon icon-report" /><span> ' + flexygo.localization.translate('navigation.reports') + ' </span></li>');
menuUl.append(itm);
itm.append($(myObj.getChildNodes(flexygo.utils.lowerKeys(proc.ReportLink))));
}
menuUl.find('li').off('click').on('click', function (event) {
if ($(this).attr('method') === 'print') {
if ($(this).attr('value') === 'page') {
$('#realMain').print();
}
else if ($(this).attr('value') === 'module') {
$('flx-contextmenu')[0].parent.closest('flx-module').print();
}
}
});
cntMenu.showMenu(menuUl, triggerElement);
}
}
exports.printListMenu = printListMenu;
})(exports = ui.exports || (ui.exports = {}));
})(ui = flexygo.ui || (flexygo.ui = {}));
})(flexygo || (flexygo = {}));
//# sourceMappingURL=exports.js.map