nscomponentsreact
Version:
React Wrapper Components for NSComponents
1,446 lines (1,383 loc) • 51.4 kB
JavaScript
var nsModuleExport = function(root,name,prototype)
{
if(typeof exports === 'object' && typeof module === 'object')
{
module.exports[name] = prototype;
}
else if (typeof define === "function" && define.amd)
{
define(name,[], function () {return prototype;});
}
else if(typeof exports === 'object')
{
exports[name] = prototype;
}
else
{
root[name] = prototype;
}
};var nsIsWeb = function(root)
{
if(typeof exports === 'object' && typeof module === 'object')
{
return false;
}
else if (typeof define === "function" && define.amd)
{
return false;
}
else if(typeof exports === 'object')
{
return false;
}
else
{
return true;
}
};if(!nsIsWeb())
{
var nsutilRef = require('./nsUtil.min.js');
var NSUtil = nsutilRef.NSUtil;
var nscontainerbaseRef = require('./nsContainerBase.min.js');
var nsExtendPrototype = nscontainerbaseRef.nsExtendPrototype;
var NSContainerBase = nscontainerbaseRef.NSContainerBase;
var svgRef = require('./nsSVG.min.js');
var NSSvg = svgRef.NSSvg;
var NSSvgShapes = svgRef.NSSvgShapes;
var plugginsRef = require('./nsPluggins.min.js');
var nsTextEditor = plugginsRef.nsTextEditor;
var nsTextAreaEditor = plugginsRef.nsTextAreaEditor;
var NSCellSelection = plugginsRef.NSCellSelection;
var NSTableCellNavigator = plugginsRef.NSTableCellNavigator;
var dateutilRef = require('./nsDateUtil.min.js');
var NSDateUtil = dateutilRef.NSDateUtil;
}
var NSExport = (function()
{
//DONOT REMOVE: taken from https://gist.github.com/sevir/3946819
if (window && !window.atob && !window.btoa)
{
( function( window ) {
var _PADCHAR = "=",
_ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
function _getbyte64( s, i ) {
var idx = _ALPHA.indexOf( s.charAt( i ) );
if ( idx === -1 ) {
throw "Cannot decode base64";
}
return idx;
}
function _decode( s ) {
var pads = 0,
i,
b10,
imax = s.length,
x = [];
s = String( s );
if ( imax === 0 ) {
return s;
}
if ( imax % 4 !== 0 ) {
throw "Cannot decode base64";
}
if ( s.charAt( imax - 1 ) === _PADCHAR ) {
pads = 1;
if ( s.charAt( imax - 2 ) === _PADCHAR ) {
pads = 2;
}
// either way, we want to ignore this last block
imax -= 4;
}
for ( i = 0; i < imax; i += 4 ) {
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 ) | _getbyte64( s, i + 3 );
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff, b10 & 0xff ) );
}
switch ( pads ) {
case 1:
b10 = ( _getbyte64( s, i ) << 18 ) | ( _getbyte64( s, i + 1 ) << 12 ) | ( _getbyte64( s, i + 2 ) << 6 );
x.push( String.fromCharCode( b10 >> 16, ( b10 >> 8 ) & 0xff ) );
break;
case 2:
b10 = ( _getbyte64( s, i ) << 18) | ( _getbyte64( s, i + 1 ) << 12 );
x.push( String.fromCharCode( b10 >> 16 ) );
break;
}
return x.join( "" );
}
function _getbyte( s, i ) {
var x = s.charCodeAt( i );
if ( x > 255 ) {
throw "INVALID_CHARACTER_ERR: DOM Exception 5";
}
return x;
}
function _encode( s ) {
if ( arguments.length !== 1 ) {
throw "SyntaxError: exactly one argument required";
}
s = String( s );
var i,
b10,
x = [],
imax = s.length - s.length % 3;
if ( s.length === 0 ) {
return s;
}
for ( i = 0; i < imax; i += 3 ) {
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 ) | _getbyte( s, i + 2 );
x.push( _ALPHA.charAt( b10 >> 18 ) );
x.push( _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) );
x.push( _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) );
x.push( _ALPHA.charAt( b10 & 0x3f ) );
}
switch ( s.length - imax ) {
case 1:
b10 = _getbyte( s, i ) << 16;
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _PADCHAR + _PADCHAR );
break;
case 2:
b10 = ( _getbyte( s, i ) << 16 ) | ( _getbyte( s, i + 1 ) << 8 );
x.push( _ALPHA.charAt( b10 >> 18 ) + _ALPHA.charAt( ( b10 >> 12 ) & 0x3F ) + _ALPHA.charAt( ( b10 >> 6 ) & 0x3f ) + _PADCHAR );
break;
}
return x.join("");
}
window.btoa = _encode;
window.atoa = _decode;
})( window );
}
"use strict";
function NSExport(grid,fileName,extPath,ignoreColumn)
{
this.__grid = grid;
this.__fileName = fileName;
this.__ignoreColumn = ignoreColumn;
this.__extFilePath = extPath ? extPath : "../lib/com/ext";
this.util = new NSUtil();
this.__defaultDelimiter = ",";
this.__defaultNewLine = "\r\n";
this.__externalScriptLoad = {jspdf:false,html2canvas:false};
}
//Orientation: portrait or landscape
NSExport.prototype.word = function(setting)
{
if(setting)
{
if(setting.type === "doc")
{
var docSetting = {appType:"doc",extension:"doc",event:setting.event,orientation:setting.orientation,element:setting.element,pageBreakTag:setting.pageBreakTag,headerFooterCss:"",startHtml:"",endHtml:""};
if(setting.hasHeaderOrFooter)
{
docSetting.headerFooterCss = setting.headerFooterCss || "";
docSetting.startHtml = setting.startHtml || "";
docSetting.endHtml = setting.endHtml || "";
}
if(setting.enablePageNumber)
{
docSetting.headerFooterCss += "p.MsoHeader, li.MsoHeader, div.MsoHeader{ margin:0in; margin-top:.0001pt; mso-pagination:widow-orphan; tab-stops:center 3.0in right 6.0in; } p.MsoFooter, li.MsoFooter, div.MsoFooter{ margin:0in 0in 1in 0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 3.0in right 6.0in; } .footer { font-size: 9pt; } @page Section1{ size:8.5in 11.0in; margin:0.5in 0.5in 0.5in 0.5in; mso-header-margin:0.5in; mso-header:h1; mso-footer:f1; mso-footer-margin:0.5in; mso-paper-source:0; } div.Section1{ page:Section1; } table#hrdftrtbl{ margin:0in 0in 0in 9in; }";
docSetting.startHtml = "<div class=\"Section1\">" + docSetting.startHtml;
docSetting.endHtml += "<table id=\"hrdftrtbl\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td> <div style=\"mso-element:footer\" id=\"f1\"> <p class=\"MsoFooter\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td align=\"center\" class=\"footer\"> <g:message code=\"offer.letter.page.label\"/> <span style=\"mso-field-code: PAGE \"></span> of <span style=\"mso-field-code: NUMPAGES \"></span> </td> </tr> </table> </p> </div> </td> </tr> </table> </div>";;
}
this.__exportOfficeTypes(docSetting);
}
else
{
if(!setting.orientation || (setting.orientation !== "portrait" && setting.orientation !== "landscape"))
{
this.util.warning("NSExport","Docx type value was either not valid or not in the correct format.Hence defaulting to portrait");
setting.orientation = "portrait";
}
var docSetting = {appType:"doc",element:setting.element,pageBreakTag:setting.pageBreakTag,headerFooterCss:"",startHtml:"",endHtml:""};
if(setting.hasHeaderOrFooter)
{
docSetting.headerFooterCss = setting.headerFooterCss;
docSetting.startHtml = setting.startHtml;
docSetting.endHtml = setting.endHtml;
}
var htmlText = this.__getHTMLTextForOffice(docSetting);
if(htmlText && htmlText.length > 0)
{
var fileName = this.__getFileName("docx");
var exportSetting = {fileName:fileName,htmlSetting:{html:htmlText,htmlStyle: setting.extraStyle,loopNodesCallback: setting.loopNodesCallback},printSetting:{orientation: setting.orientation}};
var docxExport = new NSDocxExport(exportSetting);
docxExport.process();
}
}
}
};
NSExport.prototype.powerpoint = function(setting)
{
if(setting)
{
var docSetting = {appType:"powerpoint",extension:"ppt",event:setting.event,element:setting.element};
this.__exportOfficeTypes(docSetting);
}
};
NSExport.prototype.excel = function(setting)
{
if(setting)
{
if(setting.type === "xls")
{
var docSetting = {appType:"excel",extension:"xls",sheetName:setting.sheetName,event:setting.event,element:setting.element,properties:setting.properties};
this.__exportOfficeTypes(docSetting);
}
else
{
var objXslxExport = new this.xslxExport(this,setting.sheetName,setting.event,setting.properties);
objXslxExport.exportToxlsx();
}
}
};
NSExport.prototype.csv = function(event)
{
var csvText = this.__getTableAsString(this.__defaultDelimiter,this.__defaultNewLine);
if(csvText)
{
var uri = "application/csv";
this.__downloadFile(csvText,uri,"csv",event);
}
};
NSExport.prototype.xml = function(event)
{
var xmlText = this.__getTableAsXML();
if(xmlText)
{
var uri = "application/xml";
this.__downloadFile(xmlText,uri,"xml",event);
}
};
NSExport.prototype.text = function(event)
{
var csvText = this.__getTableAsString(this.__defaultDelimiter,this.__defaultNewLine,"-");
if(csvText)
{
var uri = "application/txt";
this.__downloadFile(csvText,uri,"txt",event);
}
};
NSExport.prototype.json = function(event)
{
var jsonText = this.__getTableAsJson();
if(jsonText)
{
var uri = "application/json";
this.__downloadFile(jsonText,uri,"json",event);
}
};
NSExport.prototype.pdf = function(event,setting)
{
this.__processPDF = function()
{
this.__externalScriptLoad.jspdf = true;
if(!setting)
{
setting = {};
}
var config = {
fontSize: setting["fontSize"] || 14,
width: setting["width"] || 1200,
topMargin: setting["topMargin"] || 30,
bottomMargin: setting["bottomMargin"] || 60,
leftMargin: setting["leftMargin"] || 60,
maxWidth: setting["maxWidth"] || 550
};
var divSource = this.__getStructureForPDF(config.width,config.fontSize);
document.body.appendChild(divSource);
var pdf = new jsPDF("p", "pt", "ledger");
// we support special element handlers. Register them with jQuery-style
// ID selector for either ID or node name. ("#iAmID", "div", "span" etc.)
// There is no support for any other type of selectors
// (class, of compound) at this time.
specialElementHandlers =
{
// element with id of "bypass" - jQuery style selector
'#bypassme' : function(element, renderer) {
// true = "handled elsewhere, bypass text extraction"
return true;
}
};
margins = {
top : config.topMargin,
bottom : config.bottomMargin,
left : config.leftMargin,
width : config.maxWidth
};
var self = this;
// all coords and widths are in jsPDF instance's declared units
// 'inches' in this case
pdf.fromHTML(divSource, // HTML string or DOM elem ref.
margins.left, // x coord
margins.top, { // y coord
'width' : margins.width, // max width of content on PDF
'elementHandlers' : specialElementHandlers
},
function(dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
pdf.save(self.__getFileName("pdf"));
document.body.removeChild(divSource);
}, margins);
};
if(!this.__externalScriptLoad.jspdf)
{
this.__includeJavaScriptFile(this.__extFilePath + "/jspdf/jspdf.min.js",this.__processPDF.bind(this));
}
else
{
this.__processPDF.bind(this)();
}
};
NSExport.prototype.image = function(setting)
{
if(!setting)
{
setting = {};
}
this.__processImage = function()
{
this.__externalScriptLoad.html2canvas = true;
if(!setting.type || (setting.type !== "png" && setting.type !== "jpeg"))
{
this.util.warning("NSExport","Image type value was either not valid or not in the correct format.Hence defaulting to png");
setting.type = "png";
}
var imageType = "image/" + setting.type;
var divParent = this.__getStructureForImage();
if(divParent)
{
var nsExport = this;
html2canvas(divParent,{
onrendered: function(canvas) {
//document.body.appendChild(canvas);
var data = canvas.toDataURL(imageType);
if(!data || data === "data:,")
{
nsExport.util.throwNSError("NSExport","Please give table some width and height");
}
else
{
nsExport.__downloadFile(data,imageType,setting.type);
}
}
});
}
else
{
this.util.throwNSError("NSExport","Please add the table inside a parent Element");
}
};
if(!this.__externalScriptLoad.html2canvas)
{
this.__includeJavaScriptFile(this.__extFilePath + "/html2canvas/html2canvas.min.js",this.__processImage.bind(this));
}
else
{
this.__processImage.bind(this)();
}
};
NSExport.prototype.__exportOfficeTypes = function(setting)
{
var htmlText = this.__getHTMLTextForOffice(setting);
if(htmlText && htmlText.length > 0)
{
var uri = "application/vnd.ms-" + setting.appType;
if(setting.extension === "doc")
{
uri = "application/msword";
}
this.__downloadFile(htmlText,uri,setting.extension,setting.event);
}
};
NSExport.prototype.__getHTMLTextForOffice = function(setting)
{
var appType = setting.appType;
var element = setting.element;
var headerFooterCss = setting.headerFooterCss ? setting.headerFooterCss : "";
var startHtml = setting.startHtml ? setting.startHtml : "";
var endHtml = setting.endHtml ? setting.endHtml : "";
var htmlText = "";
var outerHTML = null;
var isTable = false;
if(element)
{
outerHTML = element.outerHTML;
}
else
{
var table = this.__getTable();
if(table)
{
outerHTML = table.outerHTML;
}
isTable = true;
}
var objValue = {};
switch(appType)
{
case "doc":
objValue = this.__getHTMLTextForWord(setting,outerHTML,isTable);
break;
case "excel":
objValue = this.__getHTMLTextForExcel(setting,outerHTML,isTable);
break;
case "powerpoint":
objValue = this.__getHTMLTextForPpt(setting,outerHTML,isTable);
break;
}
if(outerHTML)
{
objValue.style = (objValue.style) ? objValue.style : "";
htmlText = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:' + appType +'" xmlns="http://www.w3.org/TR/REC-html40">';
htmlText += '<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
htmlText +='<!--[if gte mso 9]><xml>';
htmlText += objValue.header;
htmlText += '</xml><![endif]-->';
//htmlText +="<o:shapedefaults v:ext=\"edit\" spidmax=\"1026\"/>";
htmlText += '<style>' + objValue.style + headerFooterCss + '.header{mso-style-parent:style0;color:white;font-size:10.0pt;font-weight:700;font-family:Tahoma, sans-serif;mso-font-charset:0;text-align:center;background:gray;mso-pattern:black none;}</style>';
htmlText += '</head>';
htmlText += '<body link="blue" vlink="purple">';
htmlText += startHtml + objValue.html + endHtml;
htmlText += '</body></html>';
}
return htmlText;
};
NSExport.prototype.__getHTMLTextForWord = function(setting,html,isTable)
{
var objReturn = {header:null,style:null,html:html};
objReturn.header = "<w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom><w:DoNotOptimizeForBrowser/></w:WordDocument>";
if(isTable)
{
objReturn.style = 'table{border-collapse: collapse;} table, th, td {border: 1px solid black;} ';
}
if(setting["pageBreakTag"])
{
objReturn.html = objReturn.html.replaceAll(setting["pageBreakTag"],"<br clear=all style='mso-special-character:line-break;page-break-before:always'>");
}
return objReturn;
};
NSExport.prototype.__getHTMLTextForExcel = function(setting,html,isTable)
{
var objReturn = {header:null,style:null,html:html};
objReturn.header = "<x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>";
objReturn.header += (setting["sheetName"] ? setting["sheetName"]: ((this.__fileName ? this.__fileName : "Sheet 1")));
objReturn.header += '</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>';
return objReturn;
};
NSExport.prototype.__getHTMLTextForPpt = function(setting,html,isTable)
{
var objReturn = {header:null,style:null,html:html};
objReturn.header = "<x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>";
objReturn.header += (setting["sheetName"] ? setting["sheetName"]: ((this.__fileName ? this.__fileName : "Sheet 1")));
objReturn.header += '</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook>';
return objReturn;
};
NSExport.prototype.__downloadFile = function(text,uri,fileType,event)
{
if(text && fileType)
{
if ("Blob" in window)
{
var fileName = this.__getFileName(fileType);
if ("msSaveOrOpenBlob" in window.navigator)
{
var blobObject = null;
if(text instanceof Blob)
{
blobObject = text;
}
else if(!(text instanceof ArrayBuffer) && text.indexOf("base64") > -1)
{
blobObject = this.__dataURItoBlob(text);
}
else
{
blobObject = new Blob([text], { type: uri});
}
window.navigator.msSaveOrOpenBlob(blobObject,fileName);
}
else
{
var hrefvalue = null;
if(text instanceof ArrayBuffer)
{
var blobObject = new Blob([text], {type: uri});
hrefvalue = URL.createObjectURL(blobObject);
}
else if(text instanceof Blob)
{
hrefvalue = URL.createObjectURL(text);
}
else
{
if(text.indexOf("data:") === -1)
{
uri = "data:" + uri;
}
if(text.indexOf(";base64,") === -1)
{
var base64String = ";base64," + window.btoa(window.unescape(encodeURIComponent(text)));
hrefvalue = uri + base64String;
}
else
{
hrefvalue = text;
}
}
var anchor = document.createElement("a");
if ("webkitURL" in window)
{
// Chrome allows the link to be clicked without actually adding it to the DOM.
//hrefvalue = window.webkitURL.createObjectURL([hrefvalue]);
}
else
{
//hrefvalue = window.URL.createObjectURL([hrefvalue]);
anchor.style.display = 'none';
document.body.appendChild(anchor);
this.util.addEvent(anchor,"click",function(event){
document.body.removeChild(event.target);
});
}
anchor.setAttribute("href",hrefvalue);
anchor.setAttribute("download",this.__getFileName(fileType));
anchor.setAttribute("target","_blank");
anchor.innerHTML = "Download File";
/*if(window.URL && window.URL.revokeObjectURL)
{
window.URL.revokeObjectURL(hrefvalue);
}*/
anchor.click();
if(event)
{
this.util.preventDefault(event);
}
}
}
}
};
NSExport.prototype.__getTable = function()
{
var tblResult = null;
if(this.__grid)
{
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
var tblHeader = grid.__tblCenterHeader;
var tblBody = grid.__tblCenterBody;
tblResult = document.createElement("TABLE");
tblResult.style.width = tblHeader.style.width;
if(tblHeader && tblHeader.tBodies && tblHeader.tBodies.length > 0 && tblHeader.tBodies[0].rows && tblHeader.tBodies[0].rows.length > 0)
{
var arrColumns = grid.__columns;
if(grid.gridType === grid.GRID_TYPE_GROUP)
{
arrColumns = grid.util.cloneObject(arrColumns);
arrColumns.splice(0, 1);
}
var header = tblResult.createTHead();
var headerRow = header.insertRow(-1);
var rowIndex = 0;
var colIndex = 0;
for(colIndex = 0; colIndex < arrColumns.length; colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
var headerCell = headerRow.insertCell(-1);
this.util.addStyleClass(headerCell,"header");
headerCell.style.width = colItem["width"];
var headerText = colItem["headerText"];
headerCell.appendChild(document.createTextNode(headerText));
}
}
if(tblBody && tblBody.tBodies && tblBody.tBodies.length > 0 && tblBody.tBodies[0].rows && tblBody.tBodies[0].rows.length > 0)
{
var arrItems = grid.__getAllItems();
var body = document.createElement("tbody");
tblResult.appendChild(body);
var colText = "";
var row = null;
for(rowIndex = 0;rowIndex < arrItems.length;rowIndex++)
{
var item = arrItems[rowIndex];
if(!item.hasOwnProperty(grid.__fieldRowVisible) || item[grid.__fieldRowVisible])
{
var bodyRow = body.insertRow(-1);
for(colIndex = 0;colIndex < arrColumns.length;colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
colText = item[colItem["dataField"]];
if(colItem.hasOwnProperty("exportRenderer"))
{
colText = colItem["exportRenderer"](item,colItem["dataField"],item[grid.__fieldIndex],count);
}
var bodyCell = bodyRow.insertCell(-1);
bodyCell.style.width = colItem["width"];
bodyCell.innerHTML = colText;
}
}
}
}
}
}
}
else
{
tblResult = this.__grid.cloneNode(true);
if(tblResult.tHead && tblResult.tHead.rows && tblResult.tHead.rows.length > 0)
{
var headerRow = tblResult.tHead.rows[0];
if(headerRow)
{
var arrCells = [];
var arrTempCells = [];
if(headerRow.getElementsByTagName("th").length > 0)
{
arrTempCells = headerRow.getElementsByTagName("th");
}
else if(headerRow.getElementsByTagName("td").length > 0)
{
arrTempCells = headerRow.getElementsByTagName("td");
}
arrCells = Array.prototype.slice.call(arrTempCells).slice(0);
var colIndex = 0;
var cell = null;
for(colIndex = arrCells.length - 1; colIndex >= 0; colIndex--)
{
headerRow.deleteCell(colIndex);
}
for(colIndex = 0; colIndex < arrCells.length; colIndex++)
{
cell = arrCells[colIndex];
var headerCell = headerRow.insertCell(-1);
headerCell.style.width = cell.offsetWidth + "px";
headerCell.color = "red";
headerCell.appendChild(document.createTextNode(cell.textContent.trim()));
this.util.addStyleClass(headerCell,"header");
}
}
}
}
if(tblResult)
{
tblResult.setAttribute("border",0);
tblResult.setAttribute("cellpadding",0);
tblResult.setAttribute("cellspacing",0);
tblResult.setAttribute("style","border-collapse:collapse;table-layout:fixed;");
}
}
return tblResult;
};
NSExport.prototype.__getTableAsString = function(delimiter,newLine,headerSeparator)
{
var strResult = "";
if(this.__grid)
{
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
var tblHeader = grid.__tblCenterHeader;
var tblBody = grid.__tblCenterBody;
if(tblHeader && tblHeader.tBodies && tblHeader.tBodies.length > 0 && tblHeader.tBodies[0].rows && tblHeader.tBodies[0].rows.length > 0)
{
var arrColumns = grid.__columns;
if(grid.gridType === grid.GRID_TYPE_GROUP)
{
arrColumns = grid.util.cloneObject(arrColumns);
arrColumns.splice(0, 1);
}
var rowIndex = 0;
var colIndex = 0;
var cell = null;
var arrCollItem = [];
for(colIndex = 0; colIndex < arrColumns.length; colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
var headerText = colItem["headerText"];
if(colIndex > 0)
{
strResult += delimiter;
}
strResult += this.__getFieldValue(headerText,delimiter);
}
}
strResult += newLine;
if(headerSeparator)
{
var separatorLength = strResult.length + 20;
for(var count = 0;count < separatorLength;count++)
{
strResult += headerSeparator;
}
strResult += newLine;
}
if(tblBody && tblBody.tBodies && tblBody.tBodies.length > 0 && tblBody.tBodies[0].rows && tblBody.tBodies[0].rows.length > 0)
{
var arrItems = grid.__getAllItems();
var colText = "";
for(rowIndex = 0;rowIndex < arrItems.length;rowIndex++)
{
var item = arrItems[rowIndex];
if(!item.hasOwnProperty(grid.__fieldRowVisible) || item[grid.__fieldRowVisible])
{
for(colIndex = 0;colIndex < arrColumns.length;colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
if(colIndex > 0)
{
strResult += delimiter;
}
colText = item[colItem["dataField"]];
if(colItem.hasOwnProperty("exportRenderer"))
{
colText = colItem["exportRenderer"](item,colItem["dataField"],item[grid.__fieldIndex],count);
}
strResult += this.__getFieldValue(colText,delimiter);
}
}
strResult += newLine;
}
}
}
}
}
else
{
if(this.__grid.tHead && this.__grid.tHead.rows && this.__grid.tHead.rows.length > 0)
{
var headerRow = this.__grid.tHead.rows[0];
if(headerRow)
{
var arrCells = [];
if(headerRow.getElementsByTagName("th").length > 0)
{
arrCells = headerRow.getElementsByTagName("th");
}
else if(headerRow.getElementsByTagName("td").length > 0)
{
arrCells = headerRow.getElementsByTagName("td");
}
var colIndex = 0;
var cell = null;
for(colIndex = 0; colIndex < arrCells.length; colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
cell = arrCells[colIndex];
var headerText = cell.textContent.trim();
if(colIndex > 0)
{
strResult += delimiter;
}
strResult += this.__getFieldValue(headerText,delimiter);
}
}
strResult += newLine;
if(headerSeparator)
{
var separatorLength = strResult.length + 20;
for(var count = 0;count < separatorLength;count++)
{
strResult += headerSeparator;
}
strResult += newLine;
}
}
}
if(this.__grid.tBodies && this.__grid.tBodies.length > 0 && this.__grid.tBodies[0].rows && this.__grid.tBodies[0].rows.length > 0)
{
var arrRows = this.__grid.tBodies[0].rows;
var rowIndex = 0;
var colIndex = 0;
for(rowIndex = 0;rowIndex < arrRows.length;rowIndex++)
{
var row = arrRows[rowIndex];
var cells = row.cells;
for(colIndex = 0;colIndex < cells.length;colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
var cell = cells[colIndex];
if(colIndex > 0)
{
strResult += delimiter;
}
strResult += this.__getFieldValue(cell.textContent.trim());
}
}
strResult += newLine;
}
}
}
}
return strResult;
};
NSExport.prototype.__getTableAsXML = function()
{
var strXML = "";
if(this.__grid)
{
strXML = '<?xml version="1.0" encoding="utf-8"?>';
strXML += '<root>';
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
var tblHeader = grid.__tblCenterHeader;
var tblBody = grid.__tblCenterBody;
if(tblHeader && tblHeader.tBodies && tblHeader.tBodies.length > 0 && tblHeader.tBodies[0].rows && tblHeader.tBodies[0].rows.length > 0)
{
strXML += '<columns>';
var arrColumns = grid.__columns;
if(grid.gridType === grid.GRID_TYPE_GROUP)
{
arrColumns = grid.util.cloneObject(arrColumns);
arrColumns.splice(0, 1);
}
var rowIndex = 0;
var colIndex = 0;
var cell = null;
var arrCollItem = [];
for(colIndex = 0; colIndex < arrColumns.length; colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
var headerText = colItem["headerText"];
strXML += "<column>" + headerText + "</column>";
}
}
strXML += '</columns>';
if(tblBody && tblBody.tBodies && tblBody.tBodies.length > 0 && tblBody.tBodies[0].rows && tblBody.tBodies[0].rows.length > 0)
{
strXML += '<rows>';
var arrItems = grid.__getAllItems();
var colText = "";
var rowCounter = 1;
for(rowIndex = 0;rowIndex < arrItems.length;rowIndex++)
{
var item = arrItems[rowIndex];
if(!item.hasOwnProperty(grid.__fieldRowVisible) || item[grid.__fieldRowVisible])
{
strXML += '<row id="row-'+ rowCounter++ +'">';
var colCounter = 1;
for(colIndex = 0;colIndex < arrColumns.length;colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
colText = item[colItem["dataField"]];
if(colItem.hasOwnProperty("exportRenderer"))
{
colText = colItem["exportRenderer"](item,colItem["dataField"],item[grid.__fieldIndex],count);
}
strXML += '<column id="column-'+ colCounter++ +'">';
strXML += colText;
strXML += '</column>';
}
}
strXML += '</row>';
}
}
strXML += '</rows>';
}
}
}
else
{
if(this.__grid.tHead && this.__grid.tHead.rows && this.__grid.tHead.rows.length > 0)
{
var headerRow = this.__grid.tHead.rows[0];
if(headerRow)
{
var arrCells = [];
if(headerRow.getElementsByTagName("th").length > 0)
{
arrCells = headerRow.getElementsByTagName("th");
}
else if(headerRow.getElementsByTagName("td").length > 0)
{
arrCells = headerRow.getElementsByTagName("td");
}
strXML += '<columns>';
var colIndex = 0;
var cell = null;
for(colIndex = 0; colIndex < arrCells.length; colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
cell = arrCells[colIndex];
strXML += "<column>" + cell.textContent.trim() + "</column>";
}
}
strXML += '</columns>';
}
}
if(this.__grid.tBodies && this.__grid.tBodies.length > 0 && this.__grid.tBodies[0].rows && this.__grid.tBodies[0].rows.length > 0)
{
var arrRows = this.__grid.tBodies[0].rows;
strXML += '<rows>';
var rowCounter = 1;
var rowIndex = 0;
var colIndex = 0;
for(rowIndex = 0;rowIndex < arrRows.length;rowIndex++)
{
strXML += '<row id="row-'+ rowCounter++ +'">';
var colCounter = 1;
var row = arrRows[rowIndex];
var cells = row.cells;
for(colIndex = 0;colIndex < cells.length;colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
var cell = cells[colIndex];
strXML += '<column id="column-'+ colCounter++ +'">';
strXML += cell.textContent.trim();
strXML += '</column>';
}
}
strXML += '</row>';
}
strXML += '</rows>';
}
}
strXML += '</root>';
}
return strXML;
};
NSExport.prototype.__getTableAsJson = function()
{
var retValue = { columns: [], rows: [] };
if(this.__grid)
{
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
var tblHeader = grid.__tblCenterHeader;
var tblBody = grid.__tblCenterBody;
if(tblHeader && tblHeader.tBodies && tblHeader.tBodies.length > 0 && tblHeader.tBodies[0].rows && tblHeader.tBodies[0].rows.length > 0)
{
var arrColumns = grid.__columns;
if(grid.gridType === grid.GRID_TYPE_GROUP)
{
arrColumns = grid.util.cloneObject(arrColumns);
arrColumns.splice(0, 1);
}
var rowIndex = 0;
var colIndex = 0;
for(colIndex = 0; colIndex < arrColumns.length; colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
var headerText = colItem["headerText"];
retValue.columns.push(headerText);
}
}
if(tblBody && tblBody.tBodies && tblBody.tBodies.length > 0 && tblBody.tBodies[0].rows && tblBody.tBodies[0].rows.length > 0)
{
var arrItems = grid.__getAllItems();
var colText = "";
for(rowIndex = 0;rowIndex < arrItems.length;rowIndex++)
{
var item = arrItems[rowIndex];
if(!item.hasOwnProperty(grid.__fieldRowVisible) || item[grid.__fieldRowVisible])
{
var rowData = [];
for(colIndex = 0;colIndex < arrColumns.length;colIndex++)
{
var colItem = arrColumns[colIndex];
if(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"])))
{
colText = item[colItem["dataField"]];
if(colItem.hasOwnProperty("exportRenderer"))
{
colText = colItem["exportRenderer"](item,colItem["dataField"],item[grid.__fieldIndex],count);
}
rowData.push(colText ? colText : "");
}
}
retValue.rows.push(rowData);
}
}
}
}
}
else
{
if(this.__grid.tHead && this.__grid.tHead.rows && this.__grid.tHead.rows.length > 0)
{
var headerRow = this.__grid.tHead.rows[0];
if(headerRow)
{
var arrCells = [];
if(headerRow.getElementsByTagName("th").length > 0)
{
arrCells = headerRow.getElementsByTagName("th");
}
else if(headerRow.getElementsByTagName("td").length > 0)
{
arrCells = headerRow.getElementsByTagName("td");
}
var colIndex = 0;
var cell = null;
for(colIndex = 0; colIndex < arrCells.length; colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
cell = arrCells[colIndex];
retValue.columns.push(typeof cell !== "undefined" ? cell.textContent.trim() : "");
}
}
}
}
if(this.__grid.tBodies && this.__grid.tBodies.length > 0 && this.__grid.tBodies[0].rows && this.__grid.tBodies[0].rows.length > 0)
{
var arrRows = this.__grid.tBodies[0].rows;
var rowCounter = 1;
var rowIndex = 0;
var colIndex = 0;
for(rowIndex = 0;rowIndex < arrRows.length;rowIndex++)
{
var row = arrRows[rowIndex];
var style = window.getComputedStyle(row);
if (style.display !== "none")
{
var rowData = [];
var cells = row.cells;
for(colIndex = 0;colIndex < cells.length;colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
var cell = cells[colIndex];
rowData.push(typeof cell !== "undefined" ? cell.textContent.trim() : "");
}
}
retValue.rows.push(rowData);
}
}
}
}
}
return JSON.stringify(retValue);
};
NSExport.prototype.__getTableAsArray = function()
{
var arrSource = [];
var arrColumns = [];
var util = this.util;
if(this.__grid)
{
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
if(grid.__columns && grid.__columns.length > 0)
{
var arrColumnsTemp = grid.util.cloneObject(grid.__columns,true);
if(grid.gridType === grid.GRID_TYPE_GROUP)
{
arrColumnsTemp.splice(0, 1);
}
var rowIndex = 0;
var colIndex = 0;
for(colIndex = 0; colIndex < arrColumnsTemp.length; colIndex++)
{
var colItem = arrColumnsTemp[colIndex];
if(!(colItem && (!colItem.hasOwnProperty(grid.__fieldColVisible) || colItem[grid.__fieldColVisible]) && (!colItem.hasOwnProperty("isExportable") || Boolean.parse(colItem["isExportable"]))))
{
arrColumnsTemp.splice(colIndex, 1);
}
else
{
colItem.headerCellStyle = colItem["excelStyleHeaderFunction"] ? colItem["excelStyleHeaderFunction"](colItem,colIndex) : null;
colItem.type = colItem.exportType;
if(!util.isUndefinedOrNull(colItem.width))
{
var unit = util.getDimensionUnit(colItem.width);
switch(unit)
{
case 1:
colItem.widthInPercentage = parseInt(colItem.width.substring(0,colItem.width.length - 1));
colItem.width = null;
break;
case 2:
colItem.widthInPx = util.getDimensionAsNumber(null,colItem.width);
colItem.width = null;
break;
}
}
}
}
var dataSource = grid.getFilteredData();
if(dataSource && dataSource.length > 0)
{
for(rowIndex = 0;rowIndex < dataSource.length;rowIndex++)
{
var data = dataSource[rowIndex];
var item = {};
for(colIndex = 0;colIndex < arrColumnsTemp.length;colIndex++)
{
var colItem = arrColumnsTemp[colIndex];
var dataField = colItem.dataField;
var text = colItem["exportGetBodyTextFunction"] ? colItem["exportGetBodyTextFunction"](data,dataField,colItem) : data[dataField];
var style = colItem["excelStyleBodyFunction"] ? colItem["excelStyleBodyFunction"](data,dataField,colItem,text) : null;
item[dataField] = {value: text,style: style};
}
arrSource.push(item);
}
if(grid.__enableFooter)
{
var item = {};
for (var colIndex = 0; colIndex < arrColumnsTemp.length; colIndex++)
{
var colItem = arrColumnsTemp[colIndex];
var dataField = colItem.dataField;
var text = colItem["exportGetFooterTextFunction"] ? colItem["exportGetFooterTextFunction"](dataField,colItem,grid.getGroupedSource(),0,colIndex) : "";
var style = colItem["excelStyleFooterFunction"] ? colItem["excelStyleFooterFunction"](dataField,colItem,grid.getGroupedSource(),0,colIndex,text) : null;
item[dataField] = {value: text,style: style};
}
arrSource.push(item);
}
}
arrColumns = arrColumnsTemp;
}
}
else
{
if(this.__grid.tHead && this.__grid.tHead.rows && this.__grid.tHead.rows.length > 0)
{
var headerRow = this.__grid.tHead.rows[0];
if(headerRow)
{
var arrCells = [];
if(headerRow.getElementsByTagName("th").length > 0)
{
arrCells = headerRow.getElementsByTagName("th");
}
else if(headerRow.getElementsByTagName("td").length > 0)
{
arrCells = headerRow.getElementsByTagName("td");
}
var colIndex = 0;
var cell = null;
var text = "";
var headerText = "";
var dataField = "";
for(colIndex = 0; colIndex < arrCells.length; colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
cell = arrCells[colIndex];
var altText = "col" + colIndex;
if(typeof cell == "undefined" || cell.textContent.trim() !== "")
{
text = "";
headerText = "";
dataField = altText;
}
else
{
text = cell.textContent.trim();
headerText = text;
dataField = text;
}
arrColumns.push({headerText:headerText,dataField:dataField,widthInPx:cell.offsetWidth});
}
}
}
}
if(this.__grid.tBodies && this.__grid.tBodies.length > 0 && this.__grid.tBodies[0].rows && this.__grid.tBodies[0].rows.length > 0)
{
var arrRows = this.__grid.tBodies[0].rows;
var rowIndex = 0;
var colIndex = 0;
for(rowIndex = 0;rowIndex < arrRows.length;rowIndex++)
{
var row = arrRows[rowIndex];
var style = window.getComputedStyle(row);
if (style.display !== "none")
{
var cells = row.cells;
var item = {};
var arrColIndex = 0;
for(colIndex = 0;colIndex < cells.length;colIndex++)
{
if(!this.__isColumnIgnored(colIndex))
{
var cell = cells[colIndex];
var objColumn = arrColumns[arrColIndex];
var text = (typeof cell == "undefined" || cell.textContent.trim() !== "") ? cell.textContent.trim() : "";
item[objColumn.dataField] = {value: text};
arrColIndex++;
}
}
arrSource.push(item);
}
}
}
}
}
return {columns:arrColumns,source:arrSource};
};
NSExport.prototype.__getStructureForPDF = function(width,fontSize)
{
if(this.__grid)
{
var tblResult = this.__getTable();
tblResult.style.width = width + "px";
tblResult.style.fontSize = fontSize + "px";
var divParent = this.util.createDiv("div" + this.util.getUniqueId());
divParent.appendChild(tblResult);
return divParent;
}
};
NSExport.prototype.__getStructureForImage = function()
{
var divReturn = null;
if(this.__grid)
{
var grid = this.__getPrototype(this.__grid);
if(grid && this.__isTypeNSGrid(grid))
{
divReturn = grid.__divOuterContainer;
}
else
{
divReturn = this.__grid.parentElement;
if(divReturn && divReturn.nodeName === "BODY")
{
divReturn = null;
}
}
}
return divReturn;
};
NSExport.prototype.__isColumnIgnored = function(colIndex)
{
if(this.__ignoreColumn && this.__ignoreColumn.length > 0)
{
for(var count = 0;count < this.__ignoreColumn.length;count++)
{
if(this.__ignoreColumn[count] === colIndex)
{
return true;
}
}
}
return false;
};
NSExport.prototype.__getFieldValue = function(value,delimiter)
{
if(!value)
{
value = "";
}
value = "" + value;
var addQuotes = (value.indexOf(delimiter) !== -1) || (value.indexOf('\r') !== -1) || (value.indexOf('\n') !== -1);
var replaceDoubleQuotes = (value.indexOf('"') !== -1);
if (replaceDoubleQuotes)
{
value = fixedValue.replace(/"/g, '""');
}
if (addQuotes || replaceDoubleQuotes)
{
value = '"' + value + '"';
}
return value;
};
NSExport.prototype.__getFileName = function(format)
{
var date = new Date();
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
var hour = date.getHours();
var mins = date.getMinutes();
var timePart = day + "." + month + "." + year + "_" + hour + "." + mins;
var fileName = (this.__fileName? this.__fileName : "download");
fileName = fileName + "(" + timePart + ")" + "." + format;
return fileName;
};
//taken from http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata
NSExport.prototype.__dataURItoBlob = function(dataURI)
{
// convert base64/URLEncoded data component to raw binary data held in a string
var byteString = null;
var uintArray = null;
var mimeString = null;
if (dataURI.split(',')[0].indexOf('base64') >= 0)
{
byteString = window.atob(dataURI.split(',')[1]);
}
else
{
byteString = decodeURIComponent(dataURI.split(',')[1]);
}
// separate out the mime component
mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
// write the bytes of the string to a typed array
uintArray = new Uint8Array(byteString.length);
for (var count = 0; count < byteString.length; count++)
{
uintArray[count] = byteString.charCodeAt(count);
}
return new Blob([uintArray], {type:mimeString});
};
NSExport.prototype.__includeJavaScriptFile = function (filePath,callback,position)
{
if(filePath)
{
if(!position)
{
position = "body";
}
var domPosition = document.getElementsByTagName(position)[0];
var script = document.createElement("script");
script.setAttribute("id", filePath);
script.setAttribute("type","text/javascript");
script.setAttribute("src",filePath);
if(callback)
{
script.onload = function()
{
callback(filePath);
};
}
domPosition.appendChild(script);
}
};
NSExport.prototype.__getPrototype = function(grid)
{
if(grid)
{
if(this.util.isElementOfType(grid,"NS-GRID"))
{
grid = grid.__nsGrid;
}
}
return grid;
};
NSExport.prototype.__isTypeNSGrid = function(grid)
{
try
{
if(grid)
{
if(grid instanceof NSGrid)
{
return true;
}
}
}
catch(error)
{}
return false;
};
NSExport.prototype.xslxExport = function(objNSExport,workshee