Skip to content

Commit 03a1a15

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents c0c7d5a + 6e17176 commit 03a1a15

File tree

2 files changed

+61
-36
lines changed

2 files changed

+61
-36
lines changed

@angular-generic-table/core/components/generic-table.component.ts

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import {
22
Component,
3-
OnInit,
3+
EventEmitter,
4+
Input,
45
OnChanges,
6+
OnDestroy,
7+
OnInit,
58
Output,
6-
Input,
7-
EventEmitter,
8-
Type,
9-
SimpleChanges,
109
Renderer2,
11-
OnDestroy
10+
SimpleChanges,
11+
Type
1212
} from '@angular/core';
1313
import {
1414
GtConfig,
1515
GtConfigField,
1616
GtConfigSetting,
17-
GtTexts,
18-
GtInformation,
17+
GtEvent,
1918
GtExpandedRow,
20-
GtRow,
19+
GtInformation,
2120
GtOptions,
22-
GtRowMeta,
2321
GtRenderField,
24-
GtEvent
22+
GtRow,
23+
GtRowMeta,
24+
GtTexts
2525
} from '..';
2626
import { GtMetaPipe } from '../pipes/gt-meta.pipe';
2727

@@ -84,6 +84,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
8484
set gtTotals(value: any) {
8585
this._gtTotals = value;
8686
}
87+
8788
@Input()
8889
set gtFields(value: GtConfigField<R, any>[]) {
8990
this._gtFields = value;
@@ -98,6 +99,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
9899
);
99100
}
100101
}
102+
101103
@Input()
102104
set gtSettings(value: GtConfigSetting[]) {
103105
this._gtSettings = value;
@@ -139,6 +141,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
139141
}
140142
this.restructureSorting();
141143
}
144+
142145
@Input()
143146
set gtData(initialData: Array<any>) {
144147
const data = this._gtOptions.mutateData
@@ -650,6 +653,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
650653
public deselectAllRows(): void {
651654
this._toggleAllRowProperty('isSelected', false);
652655
}
656+
653657
/**
654658
* Toggle all rows.
655659
*/
@@ -1035,6 +1039,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
10351039
this._listenForKeydownEvent();
10361040
}
10371041
}
1042+
10381043
/**
10391044
* Listen for key down event - listen for key down event during inline edit.
10401045
*/
@@ -1055,6 +1060,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
10551060
}
10561061
);
10571062
}
1063+
10581064
/**
10591065
* Inline edit update - accept changes and update row values.
10601066
*/
@@ -1077,6 +1083,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
10771083
// remove listener
10781084
this._stopListeningForKeydownEvent();
10791085
}
1086+
10801087
/**
10811088
* Inline edit cancel - cancel and reset inline edits.
10821089
*/
@@ -1104,6 +1111,7 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
11041111
// remove listener
11051112
this._stopListeningForKeydownEvent();
11061113
}
1114+
11071115
/**
11081116
* Stop listening for key down event - stop listening for key down events passed during inline edit.
11091117
*/
@@ -1297,6 +1305,19 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
12971305
// csv export headers
12981306
for (let i = 0; i < this._gtSettings.length; i++) {
12991307
if (this._gtSettings[i].export !== false) {
1308+
// get field settings
1309+
const fieldSetting = this.getProperty(
1310+
this._gtFields,
1311+
this._gtSettings[i].objectKey
1312+
);
1313+
1314+
// get export value, if exportHeader string is defined use it otherwise returns name
1315+
const exportValue: string = fieldSetting.exportHeader
1316+
? fieldSetting.exportHeader
1317+
: fieldSetting.name;
1318+
1319+
csv += this.escapeCSVDelimiter(exportValue);
1320+
13001321
csv += this.getProperty(this._gtFields, this._gtSettings[i].objectKey)
13011322
.name;
13021323

@@ -1318,21 +1339,15 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
13181339
);
13191340

13201341
// get export value, if export function is defined use it otherwise check for value function and as a last resort export raw data
1321-
let exportValue: string =
1342+
const exportValue: string =
13221343
fieldSetting.export && typeof fieldSetting.export === 'function'
13231344
? fieldSetting.export(row)
13241345
: fieldSetting.value && typeof fieldSetting.value === 'function'
13251346
? fieldSetting.value(row)
13261347
: row[this._gtSettings[i].objectKey];
13271348

1328-
// escape export value using double quotes (") if export value contains delimiter
1329-
exportValue =
1330-
typeof exportValue === 'string' &&
1331-
exportValue.indexOf(this._gtOptions.csvDelimiter) !== -1
1332-
? '"' + exportValue + '"'
1333-
: exportValue;
1349+
csv += this.escapeCSVDelimiter(exportValue);
13341350

1335-
csv += exportValue;
13361351
if (i < this._gtSettings.length - 1) {
13371352
csv += this._gtOptions.csvDelimiter;
13381353
}
@@ -1437,6 +1452,17 @@ export class GenericTableComponent<R extends GtRow, C extends GtExpandedRow<R>>
14371452
}
14381453
};
14391454

1455+
/**
1456+
* Escape export value using double quotes (") if export value contains delimiter
1457+
* @param value Value to be escaped
1458+
*/
1459+
private escapeCSVDelimiter(value) {
1460+
return typeof value === 'string' &&
1461+
value.indexOf(this._gtOptions.csvDelimiter) !== -1
1462+
? '"' + value + '"'
1463+
: value;
1464+
}
1465+
14401466
ngOnInit() {
14411467
// if number of row to display from start is set to null or 0...
14421468
if (!this.gtOptions.numberOfRows) {

@angular-generic-table/core/interfaces/gt-config-field.ts

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GtRow } from './gt-row';
2-
import { Type, Injector } from '@angular/core';
3-
import { GtCustomComponent } from '../components/gt-custom-component-factory';
4-
import { Observable } from 'rxjs/Observable';
1+
import {GtRow} from './gt-row';
2+
import {Injector, Type} from '@angular/core';
3+
import {GtCustomComponent} from '../components/gt-custom-component-factory';
4+
import {Observable} from 'rxjs/Observable';
55

66
export type GtRenderFunc<R extends GtRow> = (row: R) => string;
77

@@ -16,10 +16,8 @@ export type GtClassFunc = (row: any, col: any) => string;
1616

1717
export type GtInlineEditFunc<R extends GtRow> = (row: any, col: any) => boolean;
1818

19-
export interface GtConfigField<
20-
R extends GtRow,
21-
C extends GtCustomComponent<any>
22-
> {
19+
export interface GtConfigField<R extends GtRow,
20+
C extends GtCustomComponent<any>> {
2321
/**
2422
* name or label of field
2523
* (will be displayed as heading for column)
@@ -72,6 +70,7 @@ export interface GtConfigField<
7270
/**
7371
* custom function for export presentation
7472
*/
73+
exportHeader?: string;
7574
export?: GtValueFunc<R>;
7675
sort?: GtValueFunc<R>;
7776
/**
@@ -81,15 +80,15 @@ export interface GtConfigField<
8180
search?: any;
8281
inlineEdit?:
8382
| {
84-
active: Observable<boolean> | GtInlineEditFunc<R>;
85-
type?:
86-
| Observable<any>
87-
| Array<any>
88-
| 'text'
89-
| 'number'
90-
| 'password'
91-
| 'email';
92-
}
83+
active: Observable<boolean> | GtInlineEditFunc<R>;
84+
type?:
85+
| Observable<any>
86+
| Array<any>
87+
| 'text'
88+
| 'number'
89+
| 'password'
90+
| 'email';
91+
}
9392
| boolean
9493
| Array<any>
9594
| 'number'

0 commit comments

Comments
 (0)