aboutsummaryrefslogtreecommitdiffstats
path: root/ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js')
-rw-r--r--ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js359
1 files changed, 359 insertions, 0 deletions
diff --git a/ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js b/ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js
new file mode 100644
index 000000000..1bfaa0fc3
--- /dev/null
+++ b/ecomp-sdk-app/src/main/webapp/app/policyApp/libs/tableExport.js
@@ -0,0 +1,359 @@
+/*The MIT License (MIT)
+
+Copyright (c) 2014 https://github.com/kayalshri/
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.*/
+
+(function($){
+ $.fn.extend({
+ tableExport: function(options) {
+ var defaults = {
+ separator: ',',
+ ignoreColumn: [],
+ tableName:'yourTableName',
+ type:'csv',
+ pdfFontSize:14,
+ pdfLeftMargin:20,
+ escape:'true',
+ htmlContent:'false',
+ consoleLog:'false'
+ };
+
+ var options = $.extend(defaults, options);
+ var el = this;
+
+ if(defaults.type == 'csv' || defaults.type == 'txt'){
+
+ // Header
+ var tdData ="";
+ $(el).find('thead').find('tr').each(function() {
+ tdData += "\n";
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ tdData += '"' + parseString($(this)) + '"' + defaults.separator;
+ }
+ }
+
+ });
+ tdData = $.trim(tdData);
+ tdData = $.trim(tdData).substring(0, tdData.length -1);
+ });
+
+ // Row vs Column
+ $(el).find('tbody').find('tr').each(function() {
+ tdData += "\n";
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ tdData += '"'+ parseString($(this)) + '"'+ defaults.separator;
+ }
+ }
+ });
+ //tdData = $.trim(tdData);
+ tdData = $.trim(tdData).substring(0, tdData.length -1);
+ });
+
+ //output
+ if(defaults.consoleLog == 'true'){
+ console.log(tdData);
+ }
+ var base64data = "base64," + $.base64.encode(tdData);
+ window.open('data:application/'+defaults.type+';filename=exportData;' + base64data);
+ }else if(defaults.type == 'sql'){
+
+ // Header
+ var tdData ="INSERT INTO `"+defaults.tableName+"` (";
+ $(el).find('thead').find('tr').each(function() {
+
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ tdData += '`' + parseString($(this)) + '`,' ;
+ }
+ }
+
+ });
+ tdData = $.trim(tdData);
+ tdData = $.trim(tdData).substring(0, tdData.length -1);
+ });
+ tdData += ") VALUES ";
+ // Row vs Column
+ $(el).find('tbody').find('tr').each(function() {
+ tdData += "(";
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ tdData += '"'+ parseString($(this)) + '",';
+ }
+ }
+ });
+
+ tdData = $.trim(tdData).substring(0, tdData.length -1);
+ tdData += "),";
+ });
+ tdData = $.trim(tdData).substring(0, tdData.length -1);
+ tdData += ";";
+
+ //output
+ //console.log(tdData);
+
+ if(defaults.consoleLog == 'true'){
+ console.log(tdData);
+ }
+
+ var base64data = "base64," + $.base64.encode(tdData);
+ window.open('data:application/sql;filename=exportData;' + base64data);
+
+
+ }else if(defaults.type == 'json'){
+
+ var jsonHeaderArray = [];
+ $(el).find('thead').find('tr').each(function() {
+ var tdData ="";
+ var jsonArrayTd = [];
+
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ jsonArrayTd.push(parseString($(this)));
+ }
+ }
+ });
+ jsonHeaderArray.push(jsonArrayTd);
+
+ });
+
+ var jsonArray = [];
+ $(el).find('tbody').find('tr').each(function() {
+ var tdData ="";
+ var jsonArrayTd = [];
+
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ jsonArrayTd.push(parseString($(this)));
+ }
+ }
+ });
+ jsonArray.push(jsonArrayTd);
+
+ });
+
+ var jsonExportArray =[];
+ jsonExportArray.push({header:jsonHeaderArray,data:jsonArray});
+
+ //Return as JSON
+ //console.log(JSON.stringify(jsonExportArray));
+
+ //Return as Array
+ //console.log(jsonExportArray);
+ if(defaults.consoleLog == 'true'){
+ console.log(JSON.stringify(jsonExportArray));
+ }
+ var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));
+ window.open('data:application/json;filename=exportData;' + base64data);
+ }else if(defaults.type == 'xml'){
+
+ var xml = '<?xml version="1.0" encoding="utf-8"?>';
+ xml += '<tabledata><fields>';
+
+ // Header
+ $(el).find('thead').find('tr').each(function() {
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ xml += "<field>" + parseString($(this)) + "</field>";
+ }
+ }
+ });
+ });
+ xml += '</fields><data>';
+
+ // Row Vs Column
+ var rowCount=1;
+ $(el).find('tbody').find('tr').each(function() {
+ xml += '<row id="'+rowCount+'">';
+ var colCount=0;
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">";
+ }
+ }
+ colCount++;
+ });
+ rowCount++;
+ xml += '</row>';
+ });
+ xml += '</data></tabledata>'
+
+ if(defaults.consoleLog == 'true'){
+ console.log(xml);
+ }
+
+ var base64data = "base64," + $.base64.encode(xml);
+ window.open('data:application/xml;filename=exportData;' + base64data);
+
+ }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){
+ //console.log($(this).html());
+ var excel="<table>";
+ // Header
+ $(el).find('thead').find('tr').each(function() {
+ excel += "<tr>";
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ excel += "<td>" + parseString($(this))+ "</td>";
+ }
+ }
+ });
+ excel += '</tr>';
+
+ });
+
+
+ // Row Vs Column
+ var rowCount=1;
+ $(el).find('tbody').find('tr').each(function() {
+ excel += "<tr>";
+ var colCount=0;
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ excel += "<td>"+parseString($(this))+"</td>";
+ }
+ }
+ colCount++;
+ });
+ rowCount++;
+ excel += '</tr>';
+ });
+ excel += '</table>'
+
+ if(defaults.consoleLog == 'true'){
+ console.log(excel);
+ }
+
+ var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>";
+ excelFile += "<head>";
+ excelFile += "<!--[if gte mso 9]>";
+ excelFile += "<xml>";
+ excelFile += "<x:ExcelWorkbook>";
+ excelFile += "<x:ExcelWorksheets>";
+ excelFile += "<x:ExcelWorksheet>";
+ excelFile += "<x:Name>";
+ excelFile += "{worksheet}";
+ excelFile += "</x:Name>";
+ excelFile += "<x:WorksheetOptions>";
+ excelFile += "<x:DisplayGridlines/>";
+ excelFile += "</x:WorksheetOptions>";
+ excelFile += "</x:ExcelWorksheet>";
+ excelFile += "</x:ExcelWorksheets>";
+ excelFile += "</x:ExcelWorkbook>";
+ excelFile += "</xml>";
+ excelFile += "<![endif]-->";
+ excelFile += "</head>";
+ excelFile += "<body>";
+ excelFile += excel;
+ excelFile += "</body>";
+ excelFile += "</html>";
+
+ var base64data = "base64," + $.base64.encode(excelFile);
+ window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data);
+
+ }else if(defaults.type == 'png'){
+ html2canvas($(el), {
+ onrendered: function(canvas) {
+ var img = canvas.toDataURL("image/png");
+ window.open(img);
+
+
+ }
+ });
+ }else if(defaults.type == 'pdf'){
+
+ var doc = new jsPDF('p','pt', 'a4', true);
+ doc.setFontSize(defaults.pdfFontSize);
+
+ // Header
+ var startColPosition=defaults.pdfLeftMargin;
+ $(el).find('thead').find('tr').each(function() {
+ $(this).filter(':visible').find('th').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ var colPosition = startColPosition+ (index * 50);
+ doc.text(colPosition,20, parseString($(this)));
+ }
+ }
+ });
+ });
+
+
+ // Row Vs Column
+ var startRowPosition = 20; var page =1;var rowPosition=0;
+ $(el).find('tbody').find('tr').each(function(index,data) {
+ rowCalc = index+1;
+
+ if (rowCalc % 26 == 0){
+ doc.addPage();
+ page++;
+ startRowPosition=startRowPosition+10;
+ }
+ rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);
+
+ $(this).filter(':visible').find('td').each(function(index,data) {
+ if ($(this).css('display') != 'none'){
+ if(defaults.ignoreColumn.indexOf(index) == -1){
+ var colPosition = startColPosition+ (index * 50);
+ doc.text(colPosition,rowPosition, parseString($(this)));
+ }
+ }
+
+ });
+
+ });
+
+ // Output as Data URI
+ doc.output('datauri');
+
+ }
+
+
+ function parseString(data){
+
+ if(defaults.htmlContent == 'true'){
+ content_data = data.html().trim();
+ }else{
+ content_data = data.text().trim();
+ }
+
+ if(defaults.escape == 'true'){
+ content_data = escape(content_data);
+ }
+
+
+
+ return content_data;
+ }
+
+ }
+ });
+ })(jQuery);
+