/*!@license * Infragistics.Web.ClientUI Widget 19.1.20 * * Copyright (c) 2011-2019 Infragistics Inc. * * http://www.infragistics.com/ * * * Depends on: * jquery-1.9.1.js * jquery.ui.core.js * jquery.ui.widget.js * FileSaver.js * Intl.js * infragistics.ui.grid.framework.js * infragistics.excel_core.js * infragistics.excel_serialization_openxml.js */ (function(factory){if(typeof define==="function"&&define.amd){define(["jquery","jquery-ui","./infragistics.util","./infragistics.ui.grid.framework","./infragistics.excel_core","./infragistics.excel_serialization_openxml"],factory)}else{return factory(jQuery)}})(function($){$.ig=$.ig||{};$.ig.GridExcelExporter=$.ig.GridExcelExporter||Class.extend({callbacks:{cellExported:null,cellExporting:null,error:null,exportEnding:null,exportStarting:null,headerCellExported:null,headerCellExporting:null,rowExported:null,rowExporting:null,success:null,summaryExported:null,summaryExporting:null},settings:{columnsToSkip:[],dataExportMode:"allRows",fileName:"document",gridFeatureOptions:{columnfixing:"none",filtering:"none",hiding:"none",paging:"allRows",sorting:"none",summaries:"none"},gridStyling:"applied",skipFilteringOn:[],tableStyle:"TableStyleMedium1",worksheetName:"Sheet1"},init:function(){this.settings=$.extend({},this.settings);this.callbacks=$.extend({},this.callbacks)},exportGrid:function(grid,userSettings,userCallbacks){this._setGridReferences(grid);this._setSettings(userSettings);this._setCallbacks(userCallbacks);if(!this._handleEventCallback(this.callbacks.exportStarting,{grid:this._gridWidget})){return}var self=this;setTimeout(function(){self._createExcelWorkbookWithWorksheet();if(self._columnsToExport.length>0){self._getGridStyles();self._setDataToExport();self._exportHeaders();self._createExcelTableRegion();self._exportDataSegment();if(self._shouldResizeTableRegion){self._resizeTableRegion()}self._exportFeatures();self._calculateColumnsSize();self._styleChildGridHeaders()}var noCancel=self._handleEventCallback(self.callbacks.exportEnding,{grid:self._gridWidget,workbook:self._workbook,worksheet:self._worksheet});if(!noCancel){return}self._saveWorkbook()},0)},_setGridReferences:function(grid){if(grid.data().igHierarchicalGrid!==undefined){this._gridType="igHierarchicalGrid";this._dataSource=grid.data().igGrid.options.dataSource}else{if(grid.data().igTreeGrid!==undefined){this._gridType="igTreeGrid"}else{this._gridType="igGrid"}this._dataSource=grid.data().igGrid.dataSource}this._grid=grid.data()[this._gridType];this._gridWidget=grid;this._allColumnLayouts=[]},_setSettings:function(userSettings){this._enableFeaturesAsInGrid();this._setUserSettings(userSettings);this._setColumnsToExport(this._grid.options);if(this._grid.options.columnLayouts!==undefined){this._getAllColumnLayouts(this._grid.options.columnLayouts[0])}},_enableFeaturesAsInGrid:function(){var gridFeatureOption;for(gridFeatureOption in this.settings.gridFeatureOptions){if(!this._getFeature(gridFeatureOption)){continue}if(gridFeatureOption==="paging"){this.settings.gridFeatureOptions[gridFeatureOption]="allRows"}else{this.settings.gridFeatureOptions[gridFeatureOption]="applied"}}},_setUserSettings:function(userSettings){this.settings=$.extend(this.settings,userSettings)},_setColumnsToExport:function(columnsObj,indent){if(columnsObj!==undefined){if(indent!==undefined&&indent>0){this._childColumnsToExport=this._getVisibleColumns(columnsObj.columns)}else{this._columnsToExport=this._getVisibleColumns(columnsObj.columns)}}},_getVisibleColumns:function(columns){var i,visibleColumns=[],columnsToSkip=this.settings.columnsToSkip;if(columns.length===0&&this._gridType==="igHierarchicalGrid"){columns=this._grid.rootWidget().options.columns}for(i=0;i").attr({"class":"ui-ig-altrecord ui-iggrid-altrecord"}).appendTo(gridTable).css("display","none");var $th=$(headersTable.find("th[role='columnheader']")[0]).clone().css("display","none");$stylesTR.append($th);this._headersBackColor=$th.removeClass("ui-state-active").css("background-color");$th.remove();this._headersForeColor=headersTable.find(".ui-iggrid-headertext").css("color");if($stylesTR.css("background-color").indexOf("rgba")>-1){var backTopColor=$stylesTR.css("background-color").replace("rgba(","").replace(")","").split(", ");var backBotColor=gridTable.css("background-color").replace("rgb(","").replace(")","").split(", ");this._altRowColor=this._RGBAtoRGB(backTopColor[0],backTopColor[1],backTopColor[2],backTopColor[3],backBotColor[0],backBotColor[1],backBotColor[2])}else{this._altRowColor=$stylesTR.css("background-color")}$stylesTR.remove()}this._notAltRowColor=gridTable.css("background-color");this._rowForeColor=gridTable.css("color");this._getCellFill()}},_RGBAtoRGB:function(r,g,b,a,r2,g2,b2){var r3=a*r+(1-a)*r2,g3=a*g+(1-a)*g2,b3=a*b+(1-a)*b2;return"rgb("+r3+","+g3+","+b3+")"},_setDataToExport:function(){var paging=this.settings.gridFeatureOptions.paging,filtering=this.settings.gridFeatureOptions.filtering;this.dataToExport=[];if(paging==="currentPage"&&this._getFeature("Paging")){this.dataToExport=this._dataSource.dataView()}else if(filtering!=="filteredRowsOnly"){this.dataToExport=this._dataSource.data()}else{this.dataToExport=this._dataSource.filteredData();if(this.dataToExport===undefined){this.dataToExport=this._dataSource.data()}}},_createExcelTableRegion:function(){var i,regionRowsLength,counter=0;regionRowsLength=this.dataToExport.length;for(i=0;i0){for(columnIndex=0;columnIndex0&&this._gridType==="igHierarchicalGrid"){dataRowObj=childGrid.data().igGrid.dataSource.data()}else{dataRowObj=dataRow[prop][responseDataKey]?dataRow[prop][responseDataKey]:dataRow[prop]}if(dataRowObj!==undefined){for(i=0;i0&&childGrid.data().igGrid.options.primaryKey?dataRowObj[i][childGrid.data().igGrid.options.primaryKey]:dataRowObj[i].ig_pk;if(!rowId){rowId=i}eventArgs={rowId:rowId,element:childGrid.length>0?childGrid.data().igGrid.rowById(rowId):null,xlRow:xlRow,grid:this._gridWidget};noCancel=this._handleEventCallback(this.callbacks.rowExporting,eventArgs);if(!noCancel){continue}this._exportDataSegmentRow(xlRow,dataRowObj[i],rowIndex,rowId,indent,prop);this._handleEventCallback(this.callbacks.rowExported,eventArgs);this._xlRowIndex++;xlRow=this._worksheet.rows(this._xlRowIndex);this._goThroughChildren(dataRowObj[i],xlRow,rowIndex,indent+1,eventArgs,prop,i);this._recalculateTableEnd();this._shouldResizeTableRegion=true}}}}}},_handleColumnsFormatting:function(gridColumn,dataRow){var dataCell=dataRow[gridColumn.key];if(gridColumn.dataType==="object"&&$.type(gridColumn.mapper)==="function"){dataCell=gridColumn.mapper(dataRow)}if($.type(gridColumn.formula)==="function"){dataCell=gridColumn.formula(dataRow)}if($.type(gridColumn.formatter)==="function"){dataCell=gridColumn.formatter(dataCell,dataRow)}return dataCell},_getAllColumnLayouts:function(obj){this._allColumnLayouts.push(obj);if(obj.columnLayouts!==undefined&&obj.columnLayouts.length){this._getAllColumnLayouts(obj.columnLayouts[0])}},_exportChildGridHeaders:function(dataRow,xlRow,indent,parentDataRowProp){var columnLayout,gridColumn,i,y,columnIndex,propObj,prop,noCancel,args={},subGridColumnIndex=0,layoutColumns=[],keysCounter=0,counter=0;this._columnLayoutKeys=[];this._shouldExportCurrentHeader=true;for(i=0;i0){continue}this._verifyExportedHeader(prop,indent);if(prop!=="ig_pk"&&this._shouldExportCurrentHeader){if(counter===0){this._worksheet.rows().insert(xlRow.index()-1,1);xlRow=this._worksheet.rows(xlRow.index()-2);xlRow.outlineLevel(indent-1)}subGridColumnIndex++;xlRow.cells(0).cellFormat().indent((indent-1)*2);xlRow.cells(subGridColumnIndex-1).cellFormat().alignment($.ig.excel.HorizontalCellAlignment.left);xlRow.cells(subGridColumnIndex-1).cellFormat().font().bold(1);args={headerText:prop,columnIndex:subGridColumnIndex-1,xlRow:xlRow};noCancel=this._handleEventCallback(this.callbacks.headerCellExporting,args);if(!noCancel){return}xlRow.setCellValue(subGridColumnIndex-1,args.headerText);this._handleEventCallback(this.callbacks.headerCellExported,args);propObj={key:prop,level:indent};this._exportedProps.push(propObj);if(this._subGridHeaderRowsIndices.indexOf(xlRow.index())===-1){this._subGridHeaderRowsIndices.push(xlRow.index())}if(counter===0){this._xlRowIndex++}counter++}}}},_verifyExportedHeader:function(prop,indent){var currProp,existingProp,currPropValues=[],existingPropValues=[];currProp={key:prop,level:indent};currPropValues=$.ig.util.getArrayOfValues(currProp);for(var i=0;i0){for(i=0;i0){colWidth=gridTable.find('[aria-describedby="'+colElemId+'"]').width()}else if(this._gridWidget.data("igGrid").headersTable().find('[id="'+colElemId+'"]').length>0){colWidth=this._gridWidget.data("igGrid").headersTable().find('[id="'+colElemId+'"]').width()}col.setWidth(colWidth,$.ig.excel.WorksheetColumnWidthUnit.pixel)}}},_getCellFill:function(){this._cellFill=[];this._cellFill.push($.ig.excel.CellFill.createSolidFill(this._altRowColor));this._cellFill.push($.ig.excel.CellFill.createSolidFill(this._notAltRowColor));return this._cellFill},_styleChildGridHeaders:function(){var i,y,tableEndColumn,lastRow;if(this._gridType==="igHierarchicalGrid"&&this._colsIndices&&this._colsIndices.length>0){tableEndColumn=this._colsIndices.length>this._columnsToExport.length?this._colsIndices.length:this._columnsToExport.length;lastRow=this._worksheetRegion.lastRow()+1;this._recalculateTableEnd(tableEndColumn);this._resizeTableRegion();if(this.settings.gridStyling==="applied"){for(i=1;i