UNPKG

nscomponentsreact

Version:

React Wrapper Components for NSComponents

1,446 lines (1,383 loc) 51.4 kB
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