import { ExcelFileTypes } from './excel-enums'; export class ZipFiles { public static allFilesNames: string[] = [ '_rels/', '_rels/.rels', 'docProps/', 'docProps/app.xml', 'docProps/core.xml', 'xl/', 'xl/_rels/', 'xl/_rels/workbook.xml.rels', 'xl/theme/', 'xl/theme/theme1.xml', 'xl/worksheets/', 'xl/worksheets/sheet1.xml', 'xl/styles.xml', 'xl/workbook.xml', '[Content_Types].xml', 'xl/worksheets/_rels/', 'xl/worksheets/_rels/sheet1.xml.rels', 'xl/tables/', 'xl/tables/table1.xml', 'xl/sharedStrings.xml' ]; public static dataFilesAndFoldersNames = [ 'xl/worksheets/_rels/', 'xl/worksheets/_rels/sheet1.xml.rels', 'xl/worksheets/sheet1.xml', 'xl/tables/', 'xl/tables/table1.xml', 'xl/sharedStrings.xml' ]; public static hGridDataFilesAndFoldersNames = [ 'xl/worksheets/sheet1.xml', 'xl/sharedStrings.xml' ]; public static templatesNames = [ '_rels/', '_rels/.rels', 'docProps/', 'docProps/app.xml', 'docProps/core.xml', 'xl/', 'xl/_rels/', 'xl/_rels/workbook.xml.rels', 'xl/theme/', 'xl/theme/theme1.xml', 'xl/worksheets/', 'xl/worksheets/sheet1.xml', 'xl/styles.xml', 'xl/workbook.xml', '[Content_Types].xml' ]; public static templateFiles = [ { name: '_rels/.rels', type: ExcelFileTypes.RootRelsFile }, { name: 'docProps/app.xml', type: ExcelFileTypes.AppFile }, { name: 'docProps/core.xml', type: ExcelFileTypes.CoreFile }, { name: 'xl/_rels/workbook.xml.rels', type: ExcelFileTypes.WorkbookRelsFile }, { name: 'xl/theme/theme1.xml', type: ExcelFileTypes.ThemeFile }, { name: 'xl/styles.xml', type: ExcelFileTypes.StyleFile }, { name: 'xl/workbook.xml', type: ExcelFileTypes.WorkbookFile }, { name: 'xl/worksheets/sheet1.xml', type: ExcelFileTypes.WorksheetFile }, { name: '[Content_Types].xml', type: ExcelFileTypes.ContentTypesFile } ]; public static dataFiles = [ { name: 'xl/worksheets/_rels/sheet1.xml.rels', type: ExcelFileTypes.WorksheetRelsFile }, { name: 'xl/worksheets/sheet1.xml', type: ExcelFileTypes.WorksheetFile }, { name: 'xl/tables/table1.xml', type: ExcelFileTypes.TablesFile }, { name: 'xl/sharedStrings.xml', type: ExcelFileTypes.SharedStringsFile } ]; public static files = [ { name: '_rels/.rels', type: ExcelFileTypes.RootRelsFile }, { name: 'docProps/app.xml', type: ExcelFileTypes.AppFile }, { name: 'docProps/core.xml', type: ExcelFileTypes.CoreFile }, { name: 'xl/_rels/workbook.xml.rels', type: ExcelFileTypes.WorkbookRelsFile }, { name: 'xl/theme/theme1.xml', type: ExcelFileTypes.ThemeFile }, { name: 'xl/workbook.xml', type: ExcelFileTypes.WorkbookFile }, { name: 'xl/worksheets/sheet1.xml', type: ExcelFileTypes.WorksheetFile }, { name: 'xl/styles.xml', type: ExcelFileTypes.StyleFile }, { name: '[Content_Types].xml', type: ExcelFileTypes.ContentTypesFile }, { name: 'xl/worksheets/_rels/sheet1.xml.rels', type: ExcelFileTypes.WorksheetRelsFile }, { name: 'xl/tables/table1.xml', type: ExcelFileTypes.TablesFile }, { name: 'xl/sharedStrings.xml', type: ExcelFileTypes.SharedStringsFile } ]; public static foldersNames: string[] = [ '_rels/', 'docProps/', 'xl/', 'xl/_rels/', 'xl/tables/', 'xl/theme/', 'xl/worksheets/', 'xl/worksheets/_rels/' ]; public static filesNames: string[] = [ '_rels/.rels', 'docProps/app.xml', 'docProps/core.xml', 'xl/_rels/workbook.xml.rels', 'xl/sharedStrings.xml', 'xl/styles.xml', 'xl/tables/table1.xml', 'xl/theme/theme1.xml', 'xl/workbook.xml', 'xl/worksheets/_rels/sheet1.xml.rels', 'xl/worksheets/sheet1.xml', '[Content_Types].xml' ]; public static hasDates: boolean; /* eslint-disable max-len */ public static getTablesXML(tableData: string) { return `\r\n
`; } public static getStylesheetXML(): string { return ``; } public static getSharedStringsXML(stringsData: string) { return ` `; } public static getContentTypesXML(hasData = true) { const typesData = (hasData) ? `` : ``; return ` ${typesData} `; } public static getSheetDataFile(sheetData: string, hasValues: boolean, isHGrid: boolean) { if (hasValues) { const tablePart = isHGrid ? '' : ''; return ` ${ sheetData }` + `${tablePart}`; } else { const dimensionsPart = isHGrid ? '' : ''; return ` ${dimensionsPart}` + ``; } } public static createExpectedXML(xmlFile: ExcelFileTypes, currentData = '', hasValues = true, isHGrid = false): any { let resultXml; switch (xmlFile) { case ExcelFileTypes.RootRelsFile: resultXml = { name: ZipFiles.templatesNames[1], content : ` ` + `` }; break; case ExcelFileTypes.AppFile: resultXml = { name: ZipFiles.templatesNames[3], content : ` Microsoft Excel0` + `falseWorksheets` + `1Sheet1false` + `falsefalse16.0300` }; break; case ExcelFileTypes.CoreFile: resultXml = { name: ZipFiles.templatesNames[4], content : ` ` + `2015-06-05T18:17:20Z` + `2015-06-05T18:17:26Z` }; break; case ExcelFileTypes.WorkbookRelsFile: const typesData = (hasValues) ? `` : ''; resultXml = { name: ZipFiles.templatesNames[7], content : ` ${typesData}` + `` }; break; case ExcelFileTypes.ThemeFile: // eslint-disable-next-line max-len const actualTheme = ``; resultXml = { name: ZipFiles.templatesNames[9], content : ` ${actualTheme}` }; break; case ExcelFileTypes.StyleFile: resultXml = { name: ZipFiles.templatesNames[12], content : this.getStylesheetXML() }; break; case ExcelFileTypes.WorkbookFile: resultXml = { name: ZipFiles.templatesNames[13], content : ` ` }; break; case ExcelFileTypes.WorksheetRelsFile: resultXml = { name: ZipFiles.dataFilesAndFoldersNames[1], content : ` ` }; break; case ExcelFileTypes.WorksheetFile: resultXml = { name: ZipFiles.templatesNames[11], content : ZipFiles.getSheetDataFile(currentData, hasValues, isHGrid) }; break; case ExcelFileTypes.ContentTypesFile: resultXml = { name: ZipFiles.templatesNames[14], content : this.getContentTypesXML(hasValues) }; break; case ExcelFileTypes.SharedStringsFile: resultXml = { name: ZipFiles.dataFilesAndFoldersNames[4], content : ZipFiles.getSharedStringsXML(currentData) }; break; case ExcelFileTypes.TablesFile: resultXml = { name: ZipFiles.dataFilesAndFoldersNames[3], content : ZipFiles.getTablesXML(currentData) }; break; default: throw Error('Unexpected Excel file type!'); } return resultXml; } /* eslint-enable max-len */ }