/** * This class is used to create an xml Excel Row */Ext.define('Ext.exporter.file.excel.Row', { extend: 'Ext.exporter.file.Base', config: { /** * @cfg {Boolean} [autoFitHeight=false] * * Set this to 1 if you want to auto fit its height */ autoFitHeight: false, /** * @cfg {String} caption * * Specifies the caption that should appear when the Component's custom row and column headers are showing. */ caption: null, /** * @cfg {Ext.exporter.file.excel.Cell[]} cells * * Collection of cells available on this row. */ cells: [], /** * @cfg {Number} height * * Row's height in the Excel table */ height: null, /** * @cfg {String} index * * Index of this row in the Excel table */ index: null, /** * @cfg {Number} span * * Specifies the number of adjacent rows with the same formatting as this row. When a Span attribute * is used, the spanned row elements are not written out. * * As mentioned in the index config, rows must not overlap. Doing so results in an XML Spreadsheet document * that is invalid. Care must be taken with this attribute to ensure that the span does not include another * row index that is specified. * * Unlike columns, rows with the Span attribute must be empty. A row that contains a Span attribute and * one or more Cell elements is considered invalid. The Span attribute for rows is a short-hand method * for setting formatting properties for multiple, empty rows. * */ span: null, /** * @cfg {String} styleId * * Excel style attached to this row */ styleId: null }, /** * @method getCells * @return {Ext.util.Collection} * * Returns the collection of cells available in this row */ tpl: [ ' <Row', '<tpl if="this.exists(index)"> ss:Index="{index}"</tpl>', '<tpl if="this.exists(caption)"> c:Caption="{caption}"</tpl>', '<tpl if="this.exists(autoFitHeight)"> ss:AutoFitHeight="{autoFitHeight:this.toNumber}"</tpl>', '<tpl if="this.exists(span)"> ss:Span="{span}"</tpl>', '<tpl if="this.exists(height)"> ss:Height="{height}"</tpl>', '<tpl if="this.exists(styleId)"> ss:StyleID="{styleId}"</tpl>', '>\n', '<tpl for="cells">{[values.render()]}</tpl>', ' </Row>\n', { exists: function(value){ return !Ext.isEmpty(value); }, toNumber: function(value){ return Number(Boolean(value)); } } ], destroy: function(){ this.getCells().destroy(); return this.callParent(arguments); }, applyCells: function(data, dataCollection){ return this.checkCollection(data, dataCollection, 'Ext.exporter.file.excel.Cell'); }, /** * Convenience method to add cells. You can also use workbook.getCells().add(config). * @param {Object/Array} config * @return {Ext.exporter.file.excel.Cell/Ext.exporter.file.excel.Cell[]} */ addCell: function(config){ return this.getCells().add(config || {}); }, /** * Convenience method to fetch a cell by its id. * @param id * @return {Ext.exporter.file.excel.Cell} */ getCell: function(id){ return this.getCells().get(id); }, getRenderData: function(){ return Ext.apply(this.callParent(arguments), { cells: this.getCells().getRange() }); } });