Skip to content

Commit eadde2a

Browse files
committed
chore(*): addressed PR comments and fixed exporter test #6673
1 parent 78f467f commit eadde2a

File tree

9 files changed

+22
-20
lines changed

9 files changed

+22
-20
lines changed

projects/igniteui-angular/src/lib/services/excel/excel-exporter-grid.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,13 @@ describe('Excel Exporter', () => {
266266
const grid = fix.componentInstance.grid;
267267
grid.columns[1].hidden = true;
268268
grid.columns[2].hidden = true;
269-
const columnWidths = [100, 200, 0, undefined, null];
269+
const columnWidths = [100, 200, 0, null];
270270
fix.detectChanges();
271271

272272
await setColWidthAndExport(grid, options, fix, columnWidths[0]);
273273
await setColWidthAndExport(grid, options, fix, columnWidths[1]);
274274
await setColWidthAndExport(grid, options, fix, columnWidths[2]);
275275
await setColWidthAndExport(grid, options, fix, columnWidths[3]);
276-
await setColWidthAndExport(grid, options, fix, columnWidths[4]);
277276
});
278277

279278
it('should export all rows with the height specified in options.', async () => {

projects/igniteui-angular/src/lib/services/excel/excel-exporter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class IgxExcelExporterService extends IgxBaseExporter {
8383
}
8484

8585
const worksheetData =
86-
new WorksheetData(data, options, this._indexOfLastPinnedColumn, this._sort, this._isTreeGrid, this.columnWidthList);
86+
new WorksheetData(data, this.columnWidthList, options, this._indexOfLastPinnedColumn, this._sort, this._isTreeGrid);
8787

8888
this._xlsx = new JSZip();
8989

projects/igniteui-angular/src/lib/services/excel/excel-files.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,12 @@ export class WorksheetFile implements IExcelFile {
112112
for (let i = 0; i < worksheetData.columnCount; i++) {
113113
const width = dictionary.columnWidths[i];
114114
// Use the width provided in the options if it exists
115-
const widthInTwips = worksheetData.options.columnWidth ?
116-
worksheetData.options.columnWidth :
117-
Math.max(((width / 96) * 14.4), WorksheetFile.MIN_WIDTH);
115+
let widthInTwips = worksheetData.options.columnWidth !== undefined ?
116+
worksheetData.options.columnWidth :
117+
Math.max(((width / 96) * 14.4), WorksheetFile.MIN_WIDTH);
118+
if (widthInTwips === 0 || widthInTwips === null) {
119+
widthInTwips = WorksheetFile.MIN_WIDTH;
120+
}
118121

119122
cols.push(`<col min="${(i + 1)}" max="${(i + 1)}" width="${widthInTwips}" customWidth="1"/>`);
120123
}
@@ -175,9 +178,12 @@ export class WorksheetFile implements IExcelFile {
175178
for (let i = 0; i < worksheetData.columnCount; i++) {
176179
const width = dictionary.columnWidths[i];
177180
// Use the width provided in the options if it exists
178-
const widthInTwips = worksheetData.options.columnWidth ?
179-
worksheetData.options.columnWidth :
180-
Math.max(((width / 96) * 14.4), WorksheetFile.MIN_WIDTH);
181+
let widthInTwips = worksheetData.options.columnWidth !== undefined ?
182+
worksheetData.options.columnWidth :
183+
Math.max(((width / 96) * 14.4), WorksheetFile.MIN_WIDTH);
184+
if (widthInTwips === 0 || widthInTwips === null) {
185+
widthInTwips = WorksheetFile.MIN_WIDTH;
186+
}
181187

182188
cols += `<col min="${(i + 1)}" max="${(i + 1)}" width="${widthInTwips}" customWidth="1"/>`;
183189
}

projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ export class FileContentData {
615615
case null:
616616
case 0:
617617
wsDataColSettings =
618-
`<cols><col min="1" max="1" width="227.85" customWidth="1"/></cols>`;
618+
`<cols><col min="1" max="1" width="8.34" customWidth="1"/></cols>`;
619619
break;
620620
}
621621

projects/igniteui-angular/src/lib/services/excel/worksheet-data-dictionary.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export class WorksheetDataDictionary {
2323

2424
public stringsCount: number;
2525

26-
// TODO Switch to fixed column width since auto-calculation takes a lot of time
2726
constructor(columnCount: number, columnWidth: number, columnWidthsList: number[]) {
2827
this._dictionary = {};
2928
this._widthsDictionary = {};

projects/igniteui-angular/src/lib/services/excel/worksheet-data.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export class WorksheetData {
1010
private _keys: string[];
1111
private _isSpecialData: boolean;
1212

13-
constructor(private _data: any[], public options: IgxExcelExporterOptions, public indexOfLastPinnedColumn,
14-
public sort: any, public isTreeGridData = false, public columnWidths: number[]) {
15-
this.initializeData(columnWidths);
13+
constructor(private _data: any[], private _columnWidths: number[], public options: IgxExcelExporterOptions,
14+
public indexOfLastPinnedColumn, public sort: any, public isTreeGridData = false) {
15+
this.initializeData();
1616
}
1717

1818
public get data() {
@@ -43,7 +43,7 @@ export class WorksheetData {
4343
return this._dataDictionary;
4444
}
4545

46-
private initializeData(columnWidths: number[]) {
46+
private initializeData() {
4747
if (!this._data || this._data.length === 0) {
4848
return;
4949
}
@@ -60,6 +60,6 @@ export class WorksheetData {
6060
this._columnCount = this._keys.length;
6161
this._rowCount = this._data.length + 1;
6262

63-
this._dataDictionary = new WorksheetDataDictionary(this._columnCount, this.options.columnWidth, columnWidths);
63+
this._dataDictionary = new WorksheetDataDictionary(this._columnCount, this.options.columnWidth, this._columnWidths);
6464
}
6565
}

projects/igniteui-angular/src/lib/services/exporter-common/base-export-service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export abstract class IgxBaseExporter {
117117

118118
const columns = grid.columnList.toArray();
119119
this._columnList = new Array<any>(columns.length);
120-
this._columnWidthList = new Array<any>(columns.length);
120+
this._columnWidthList = new Array<any>(columns.filter(c => !c.hidden).length);
121121

122122
const hiddenColumns = [];
123123
let lastVisbleColumnIndex = -1;

src/app/grid-performance/grid-performance.sample.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div style="height: 100vh; width: 100wh">
22
<span> Fixed Size Rows</span>
3-
<igx-grid #grid1 [showToolbar]="true" [rowHeight]="20" displayDensity="compact" [columnHiding]="true" [data]="localData" [rowSelection]="selectionMode" [allowFiltering]="true" [filterMode]="'excelStyleFilter'" [exportCsv]="true" [exportExcel]="true" exportText="Export" exportExcelText="Export to Excel" exportCsvText="Export to CSV">
3+
<igx-grid #grid1 [showToolbar]="true" [rowHeight]="20" displayDensity="compact" [columnHiding]="true" [data]="localData" [rowSelection]="selectionMode" [allowFiltering]="true" [filterMode]="'excelStyleFilter'">
44
<igx-column *ngFor="let c of columns" [sortable]="true" [filterable]="true" [resizable]="true" [field]="c.field" [header]="c.field" [width]="c.width">
55
</igx-column>
66
</igx-grid>

src/main.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// TODO this is fixing the JSZip perf
2-
// import 'setimmediate';
31
import { enableProdMode } from '@angular/core';
42
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
53

0 commit comments

Comments
 (0)