/** * @private */Ext.define('Ext.exporter.file.ooxml.excel.Sheet', { extend: 'Ext.exporter.file.ooxml.XmlRels', config: { /** * @cfg {Ext.exporter.file.ooxml.excel.Workbook} workbook * * Reference to the parent workbook. */ workbook: null }, folder: 'sheet', fileName: 'sheet', nameTemplate: 'Sheet{index}', fileNameTemplate: '{fileName}{index}.xml', // Excel limits the worksheet name to 31 chars nameLengthLimit: 31, // eslint-disable-next-line no-useless-escape nameRegex: /[\/*?:\[\]]/gi, destroy: function() { this.callParent(); this.setWorkbook(null); }, updateIndex: function() { if (this._name == null) { this.generateName(); } this.callParent(arguments); }, applyName: function(value) { var limit = this.nameLengthLimit, name = Ext.String.trim(String(value || '').replace(this.nameRegex, '')); if (name.length > limit + 3) { name = Ext.String.ellipsis(name, limit); } else { name = name.substr(0, limit); } return Ext.util.Format.htmlEncode(name); }, updateName: function(name) { var me = this, wb = me.getWorkbook(), generate = false, sheets; if (!me.isNaming && !me.isConfiguring) { if (wb) { sheets = wb.getSheets(); generate = !!sheets.findBy(function(item) { return (item !== me && item.getName() === name); }); } generate = generate || Ext.isEmpty(name); if (generate) { me.isNaming = true; me.generateName(); me.isNaming = false; } } }});