| Current Path : /var/www/www.yekclass.com/public_html/components/com_tabulizer/assets/js/export/ |
| Current File : /var/www/www.yekclass.com/public_html/components/com_tabulizer/assets/js/export/exportdata.js |
/* Convert table/graph contents generated by Tabulizer to file format for viewing and downloading
http://www.tabulizer.com */
function validateEmailPreferences(options) {
var email_recipients = jtQuery('#' + options.form_prefix + '_exportemail_recipients');
var email_subject = jtQuery('#' + options.form_prefix + '_exportemail_subject');
var email_body = jtQuery('#' + options.form_prefix + '_exportemail_body');
}
function findNextArrayKey(start_index, my_array) {
for (var i=start_index;i<=1000;i++) {
if (i in my_array) continue;
return i;
}
}
jtQuery.fn.table2CSV = function(options) {
var options = jtQuery.extend({
column_separator: ',',
row_delimiter: '\r\n',
strip_tags: 'all'
},
options);
var csvData = [];
var el = this;
var tmpRow = []; // construct header available array
var colspan, rowspan, row_id, column_id, placeholder = [];
if (options.datatable !== undefined && options.datatable !== null) {
var headers = options.datatable.find('thead tr').each(function() {
var tmpRow = [];
jtQuery(this).filter(':visible').find('td').each(function() {
colspan = jtQuery(this).attr('colspan');
rowspan = jtQuery(this).attr('rowspan');
if (colspan) { colspan = parseInt(colspan); } else colspan = 1;
if (rowspan) { rowspan = parseInt(rowspan); } else rowspan = 1;
if (jtQuery(this).css('display') != 'none') tmpRow[tmpRow.length] = filterData(jtQuery(this).html());
if (colspan > 1) {
while (colspan>1) {
tmpRow[tmpRow.length] = '';
colspan--;
}
}
});
if (tmpRow.length > 0) row2CSV(tmpRow);
});
var rows = options.datatable.fnGetFilteredNodes(); // instead of var rows = options.datatable.fnGetNodes();
for(var i=0;i<rows.length;i++)
{
tmpRow = [];
jtQuery(rows[i]).find('th').each(function() {
tmpRow[tmpRow.length] = filterData(jtQuery(this).html());
});
if (tmpRow.length > 0) row2CSV(tmpRow);
tmpRow = [];
jtQuery(rows[i]).find('td').each(function() {
tmpRow[tmpRow.length] = filterData(jtQuery(this).html());
});
if (tmpRow.length > 0) row2CSV(tmpRow);
}
var footers = options.datatable.find('tfoot tr').each(function() {
var tmpRow = [];
jtQuery(this).filter(':visible').find('td').each(function() {
colspan = jtQuery(this).attr('colspan');
rowspan = jtQuery(this).attr('rowspan');
if (colspan) { colspan = parseInt(colspan); } else colspan = 1;
if (rowspan) { rowspan = parseInt(rowspan); } else rowspan = 1;
if (jtQuery(this).css('display') != 'none') tmpRow[tmpRow.length] = filterData(jtQuery(this).html());
if (colspan > 1) {
while (colspan>1) {
tmpRow[tmpRow.length] = '';
colspan--;
}
}
});
if (tmpRow.length > 0) row2CSV(tmpRow);
});
} else {
tmpRow = [];
row_id = 0;
column_id = 0;
placeholder = [];
// header
jtQuery(el).find('tr').each(function() {
var tmpRow = [];
if (row_id in placeholder) {
for (var i in placeholder[row_id]) {
tmpRow[i] = ' ';
}
}
column_id = findNextArrayKey(0, tmpRow);
jtQuery(this).filter(':visible').find('th').each(function() {
colspan = jtQuery(this).attr('colspan');
rowspan = jtQuery(this).attr('rowspan');
if (colspan) { colspan = parseInt(colspan); } else colspan = 1;
if (rowspan) { rowspan = parseInt(rowspan); } else rowspan = 1;
if (rowspan>1) {
while (rowspan>1) {
row_key = row_id+rowspan-1;
if (!(row_key in placeholder)) {
placeholder[row_key] = [];
}
placeholder[row_key][column_id] = 'X';
rowspan--;
}
}
if (jtQuery(this).css('display') != 'none') {
tmpRow[column_id] = filterData(jtQuery(this).html());
column_id = findNextArrayKey(0, tmpRow);
}
if (colspan > 1) {
while (colspan>1) {
tmpRow[column_id] = '';
column_id = findNextArrayKey(0, tmpRow);
colspan--;
}
}
});
if (tmpRow.length > 0) row2CSV(tmpRow);
row_id++;
});
// Rest of table data
jtQuery(el).find('tr').each(function() {
var tmpRow = [];
if (row_id in placeholder) {
for (var i in placeholder[row_id]) {
tmpRow[i] = ' ';
}
}
column_id = findNextArrayKey(0, tmpRow);
jtQuery(this).filter(':visible').find('td').each(function() {
colspan = jtQuery(this).attr('colspan');
rowspan = jtQuery(this).attr('rowspan');
if (colspan) { colspan = parseInt(colspan); } else colspan = 1;
if (rowspan) { rowspan = parseInt(rowspan); } else rowspan = 1;
if (rowspan>1) {
while (rowspan>1) {
row_key = row_id+rowspan-1;
if (!(row_key in placeholder)) {
placeholder[row_key] = [];
}
placeholder[row_key][column_id] = 'X';
rowspan--;
}
}
if (jtQuery(this).css('display') != 'none') {
tmpRow[column_id] = filterData(jtQuery(this).html());
column_id = findNextArrayKey(0, tmpRow);
}
if (colspan > 1) {
while (colspan>1) {
tmpRow[column_id] = '';
column_id = findNextArrayKey(0, tmpRow);
colspan--;
}
}
});
if (tmpRow.length > 0) row2CSV(tmpRow);
row_id++;
});
}
var mydata = csvData.join(options.row_delimiter);
return mydata;
function row2CSV(tmpRow) {
var tmp = tmpRow.join('') // to remove any blank rows
if (tmpRow.length > 0 && tmp != '') {
var mystr = tmpRow.join(options.column_separator);
csvData[csvData.length] = mystr;
}
}
function filterData(input) {
output = input;
// select and input
if (output.indexOf('tab_search_col_') > 0) {
var matches = output.match(/<option([^>]+)>([^<]+)</);
if (matches) {
output = matches[2];
} else {
matches = output.match(/value="([^"]+)/);
if (matches) {
output = matches[1];
}
}
}
// escape "
regexp = new RegExp(/"/g);
output = output.replace(regexp, '\'');
// remove new lines
output = output.replace(/(\r\n|\n|\r)/gm,"");
// decode HTML special entities
output = jtQuery("<div />").html(output).text();
//HTML
if (options.strip_tags == "all") {
regexp = new RegExp(/\<[^\<]+\>/g);
output = output.replace(regexp, "");
}
if (output == "") return '';
return '"' + output + '"';
}
};
jtQuery.fn.appendExportData = function(options) {
var options = jtQuery.extend({
show_view: true,
show_download: true,
show_email: true,
strip_tags: "all"
},
options);
var input_ref = jtQuery(this);
var export_type, export_output, export_data;
var data_source = options.data_source;
var data_source_tag = '';
var ds_user_params = '';
var datatable_obj = null, datatable_bottom_info = null;
if (window.jtQuery) {
if (jtQuery('#'+options.form_prefix).length && jtQuery.fn.dataTable && (options.data_source != 'graph')) {
datatable_obj = jtQuery('#'+options.form_prefix).dataTable();
var datatable_settings = datatable_obj.fnSettings();
if (datatable_settings.sAjaxSource) {
var url = datatable_settings.sAjaxSource;
var match_ds = url.match(/&ds_tag=([^&]+)/);
if (match_ds) {
data_source_tag = match_ds[1];
}
var match_ds = url.match(/&ds_user_params=([^&]+)/);
if (match_ds) {
ds_user_params = match_ds[1];
}
}
var table_wrapper = jtQuery(this).closest(".dataTables_wrapper");
if (table_wrapper.length) {
var bottom_info = table_wrapper.find('.tab_bottom');
if (bottom_info.length) datatable_bottom_info = bottom_info;
}
}
}
var d = jtQuery(document.createElement("div"));
d.addClass("export-data-buttons");
d.html(decodeURIComponent(options.form_code).replace(/\+/g, ' '));
if (datatable_bottom_info !== undefined && datatable_bottom_info !== null) {
datatable_bottom_info.after(d);
} else {
jtQuery(this).after(d);
}
if (options.show_view) {
var c = jtQuery('#' + options.form_prefix + '_view_btn');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_view_pref');
pref.removeClass('phidden');
if (options.show_download) {
pref = jtQuery('#' + options.form_prefix + '_download_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
if (options.show_email) {
pref = jtQuery('#' + options.form_prefix + '_email_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
});
c = jtQuery('#' + options.form_prefix + '_view_btn_submit');
c.bind("click", {
export_source: input_ref
}, function (h) {
export_type = jtQuery('#' + options.form_prefix + '_view_pref_exporttype').filter(":selected").val();
export_output = 'browser';
if (data_source == 'table') {
export_data = input_ref.table2CSV({output_format:'html', strip_tags: options.strip_tags, datatable: datatable_obj});
} else {
var j = h.data.export_source.jqplotToImageElem();
export_data = j.src;
}
jtQuery('#' + options.form_prefix + '_exportdata').val(export_data);
jtQuery('#' + options.form_prefix + '_exporttype').val(export_type);
jtQuery('#' + options.form_prefix + '_exportoutput').val(export_output);
jtQuery('#' + options.form_prefix + '_datasourcetag').val(data_source_tag);
jtQuery('#' + options.form_prefix + '_dsuserparams').val(ds_user_params);
jtQuery('#' + options.form_id).submit();
});
c = jtQuery('#' + options.form_prefix + '_view_btn_close');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_download_pref');
pref.addClass('phidden');
});
}
if (options.show_download) {
var c = jtQuery('#' + options.form_prefix + '_download_btn');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_download_pref');
pref.removeClass('phidden');
if (options.show_view) {
pref = jtQuery('#' + options.form_prefix + '_view_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
if (options.show_email) {
pref = jtQuery('#' + options.form_prefix + '_email_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
});
c = jtQuery('#' + options.form_prefix + '_download_btn_submit');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_download_pref');
var pref_exporttype = document.getElementById(options.form_prefix + '_download_pref_exporttype');
export_type = pref_exporttype.options[pref_exporttype.selectedIndex].value;
export_output = 'file';
if (data_source == 'table') {
export_data = input_ref.table2CSV({output_format:'text', strip_tags: options.strip_tags, datatable: datatable_obj});
} else {
var j = h.data.export_source.jqplotToImageElem();
export_data = j.src;
}
jtQuery('#' + options.form_prefix + '_exportdata').val(export_data);
jtQuery('#' + options.form_prefix + '_exporttype').val(export_type);
jtQuery('#' + options.form_prefix + '_exportoutput').val(export_output);
jtQuery('#' + options.form_prefix + '_datasourcetag').val(data_source_tag);
jtQuery('#' + options.form_prefix + '_dsuserparams').val(ds_user_params);
jtQuery('#' + options.form_id).submit();
pref.addClass('phidden');
});
c = jtQuery('#' + options.form_prefix + '_download_btn_close');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_download_pref');
pref.addClass('phidden');
});
}
if (options.show_email) {
var c = jtQuery('#' + options.form_prefix + '_email_btn');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_email_pref');
pref.removeClass('phidden');
if (options.show_view) {
pref = jtQuery('#' + options.form_prefix + '_view_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
if (options.show_download) {
pref = jtQuery('#' + options.form_prefix + '_download_pref');
if (!pref.hasClass('phidden')) pref.addClass('phidden');
}
});
var c = jtQuery('#' + options.form_prefix + '_email_btn_submit');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref_exporttype = document.getElementById(options.form_prefix + '_email_pref_exporttype');
export_type = pref_exporttype.options[pref_exporttype.selectedIndex].value;
export_output = 'email';
if (data_source == 'table') {
export_data = input_ref.table2CSV({output_format:'html', strip_tags: options.strip_tags, datatable: datatable_obj});
} else {
var j = h.data.export_source.jqplotToImageElem();
export_data = j.src;
}
jtQuery('#' + options.form_prefix + '_exportdata').val(export_data);
jtQuery('#' + options.form_prefix + '_exporttype').val(export_type);
jtQuery('#' + options.form_prefix + '_exportoutput').val(export_output);
jtQuery('#' + options.form_prefix + '_datasourcetag').val(data_source_tag);
jtQuery('#' + options.form_prefix + '_dsuserparams').val(ds_user_params);
jtQuery('#' + options.form_id).submit();
});
c = jtQuery('#' + options.form_prefix + '_email_btn_close');
c.bind("click", {
export_source: input_ref
}, function (h) {
var pref = jtQuery('#' + options.form_prefix + '_email_pref');
pref.addClass('phidden');
});
}
};