Skip to content

Commit 59ef17d

Browse files
authored
fix: finjs pdf button styling and exported columns (#3853)
1 parent 9be0b79 commit 59ef17d

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

projects/app-lob/src/app/grid-finjs/grid-finjs.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
<igx-grid-toolbar-actions>
2222
<igx-grid-toolbar-hiding title="Indicators"></igx-grid-toolbar-hiding>
2323
<igx-grid-toolbar-pinning></igx-grid-toolbar-pinning>
24-
<igx-grid-toolbar-exporter [exportCSV]="false">
24+
<igx-grid-toolbar-exporter [exportCSV]="false" (exportStarted)="exportStarted($event)">
2525
<span excelText>Export to Excel</span>
26+
<span pdfText>Export to PDF</span>
2627
</igx-grid-toolbar-exporter>
2728
</igx-grid-toolbar-actions>
2829
</igx-grid-toolbar>

projects/app-lob/src/app/grid-finjs/grid-finjs.component.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable max-len */
22
import { AsyncPipe, CurrencyPipe } from '@angular/common';
33
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, DOCUMENT, inject } from '@angular/core';
4-
import { CellType, GridSelectionMode, IGridKeydownEventArgs, IRowSelectionEventArgs, IgxCellEditorTemplateDirective, IgxCellTemplateDirective, IgxColumnComponent, IgxExcelTextDirective, IgxGridToolbarActionsComponent, IgxGridToolbarComponent, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent } from 'igniteui-angular/grids/core';
4+
import { CellType, GridSelectionMode, IColumnExportingEventArgs, IGridKeydownEventArgs, IRowSelectionEventArgs, IgxCellEditorTemplateDirective, IgxCellTemplateDirective, IgxColumnComponent, IgxExcelTextDirective, IgxExporterEvent, IgxGridToolbarActionsComponent, IgxGridToolbarComponent, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxPdfExporterOptions, IgxPdfExporterService, IgxPdfTextDirective } from 'igniteui-angular/grids/core';
55
import { DefaultSortingStrategy, IgxOverlayOutletDirective, OverlaySettings, SortingDirection } from 'igniteui-angular/core';
66
import { IgxGridComponent } from 'igniteui-angular/grids/grid';
77
import { IgxSelectComponent, IgxSelectItemComponent } from 'igniteui-angular/select';
@@ -17,11 +17,12 @@ import { FormsModule } from '@angular/forms';
1717
selector: 'app-finjs-grid',
1818
templateUrl: './grid-finjs.component.html',
1919
styleUrls: ['./grid-finjs.component.scss'],
20-
imports: [IgxGridComponent, IgxPreventDocumentScrollDirective, IgxGridToolbarComponent, IgxGridToolbarActionsComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarExporterComponent, IgxExcelTextDirective, IgxColumnComponent, IgxCellEditorTemplateDirective, IgxSelectComponent, FormsModule, IgxFocusDirective, IgxSelectItemComponent, IgxCellTemplateDirective, IgxIconComponent, IgxIconButtonDirective, IgxOverlayOutletDirective, AsyncPipe, CurrencyPipe]
20+
imports: [IgxGridComponent, IgxPreventDocumentScrollDirective, IgxGridToolbarComponent, IgxGridToolbarActionsComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarExporterComponent, IgxExcelTextDirective, IgxPdfTextDirective, IgxColumnComponent, IgxCellEditorTemplateDirective, IgxSelectComponent, FormsModule, IgxFocusDirective, IgxSelectItemComponent, IgxCellTemplateDirective, IgxIconComponent, IgxIconButtonDirective, IgxOverlayOutletDirective, AsyncPipe, CurrencyPipe]
2121
})
2222
export class GridFinJSComponent implements OnInit {
2323
private el = inject(ElementRef);
2424
private document = inject<Document>(DOCUMENT);
25+
private pdfExportService = inject(IgxPdfExporterService);
2526
dataService = inject(SignalRService);
2627

2728
@ViewChild('grid1', { static: true }) public grid: IgxGridComponent;
@@ -116,6 +117,34 @@ export class GridFinJSComponent implements OnInit {
116117
this.chartColumnKeyDown.emit(target.row.data);
117118
}
118119

120+
public exportStarted(args: IgxExporterEvent) {
121+
(args.options as IgxPdfExporterOptions).pageSize = "A3";
122+
123+
const includedFields = new Set([
124+
'id',
125+
'category',
126+
'type',
127+
'contract',
128+
'settlement',
129+
'country',
130+
'region',
131+
'lastupdated',
132+
'openprice',
133+
'price',
134+
'change',
135+
'buy',
136+
'sell'
137+
]);
138+
139+
this.pdfExportService.columnExporting.subscribe((exportArgs: IColumnExportingEventArgs) => {
140+
const field = exportArgs.field.toLowerCase();
141+
if (!includedFields.has(field)) {
142+
exportArgs.cancel = true;
143+
}
144+
});
145+
146+
}
147+
119148
get gridWrapper(): HTMLElement {
120149
return this.el.nativeElement.querySelector('.grid__wrapper') as HTMLElement;
121150
}

0 commit comments

Comments
 (0)