@swimlane/ngx-datatable 11.1.7 → 11.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/assets/app.css +5 -6
  2. package/config/deploy.js +2 -2
  3. package/config/karma.conf.js +5 -0
  4. package/config/webpack.dev.js +1 -1
  5. package/package.json +8 -7
  6. package/release/assets/app.css +5 -6
  7. package/release/components/body/body-group-header.directive.d.ts +4 -5
  8. package/release/components/body/body-group-header.directive.js +4 -5
  9. package/release/components/body/body-group-header.directive.js.map +1 -1
  10. package/release/components/body/body-row.component.js +3 -2
  11. package/release/components/body/body-row.component.js.map +1 -1
  12. package/release/components/body/body-row.component.metadata.json +1 -1
  13. package/release/components/body/body.component.d.ts +4 -1
  14. package/release/components/body/body.component.js +22 -7
  15. package/release/components/body/body.component.js.map +1 -1
  16. package/release/components/body/body.component.metadata.json +1 -1
  17. package/release/components/body/index.d.ts +1 -0
  18. package/release/components/body/index.js +1 -0
  19. package/release/components/body/index.js.map +1 -1
  20. package/release/components/body/index.metadata.json +1 -1
  21. package/release/components/body/summary/index.d.ts +1 -0
  22. package/release/components/body/summary/index.js +7 -0
  23. package/release/components/body/summary/index.js.map +1 -0
  24. package/release/components/body/summary/index.metadata.json +1 -0
  25. package/release/components/body/summary/summary-row.component.d.ts +19 -0
  26. package/release/components/body/summary/summary-row.component.js +85 -0
  27. package/release/components/body/summary/summary-row.component.js.map +1 -0
  28. package/release/components/body/summary/summary-row.component.metadata.json +1 -0
  29. package/release/components/columns/column.directive.d.ts +2 -0
  30. package/release/components/columns/column.directive.js +8 -0
  31. package/release/components/columns/column.directive.js.map +1 -1
  32. package/release/components/columns/column.directive.metadata.json +1 -1
  33. package/release/components/datatable.component.css +7 -2
  34. package/release/components/datatable.component.d.ts +14 -1
  35. package/release/components/datatable.component.js +34 -7
  36. package/release/components/datatable.component.js.map +1 -1
  37. package/release/components/datatable.component.metadata.json +1 -1
  38. package/release/components/footer/pager.component.js +1 -1
  39. package/release/components/footer/pager.component.js.map +1 -1
  40. package/release/components/footer/pager.component.metadata.json +1 -1
  41. package/release/components/header/header-cell.component.js +2 -1
  42. package/release/components/header/header-cell.component.js.map +1 -1
  43. package/release/components/header/header-cell.component.metadata.json +1 -1
  44. package/release/components/header/header.component.js +1 -0
  45. package/release/components/header/header.component.js.map +1 -1
  46. package/release/datatable.module.js +2 -1
  47. package/release/datatable.module.js.map +1 -1
  48. package/release/datatable.module.metadata.json +1 -1
  49. package/release/directives/resizeable.directive.js +5 -2
  50. package/release/directives/resizeable.directive.js.map +1 -1
  51. package/release/events.js +3 -3
  52. package/release/events.js.map +1 -1
  53. package/release/events.metadata.json +1 -1
  54. package/release/index.css +8 -3
  55. package/release/index.js +201 -42
  56. package/release/index.min.js +1 -1
  57. package/release/index.min.js.map +1 -1
  58. package/release/themes/bootstrap.css +2 -0
  59. package/release/themes/dark.css +6 -0
  60. package/release/themes/material.css +6 -0
  61. package/release/types/table-column.type.d.ts +14 -0
  62. package/release/utils/column-helper.js +6 -0
  63. package/release/utils/column-helper.js.map +1 -1
  64. package/release/utils/column.d.ts +0 -4
  65. package/release/utils/column.js +0 -10
  66. package/release/utils/column.js.map +1 -1
  67. package/release/utils/column.metadata.json +1 -1
  68. package/release/utils/math.js +1 -1
  69. package/release/utils/math.js.map +1 -1
  70. package/src/components/body/body-group-header.directive.ts +5 -6
  71. package/src/components/body/body-row.component.ts +8 -7
  72. package/src/components/body/body.component.spec.ts +8 -7
  73. package/src/components/body/body.component.ts +27 -6
  74. package/src/components/body/index.ts +1 -0
  75. package/src/components/body/summary/index.ts +1 -0
  76. package/src/components/body/summary/summary-row.component.spec.ts +131 -0
  77. package/src/components/body/summary/summary-row.component.ts +74 -0
  78. package/src/components/columns/column.directive.ts +4 -2
  79. package/src/components/datatable.component.scss +14 -1
  80. package/src/components/datatable.component.spec.ts +55 -7
  81. package/src/components/datatable.component.ts +31 -9
  82. package/src/components/footer/footer.component.spec.ts +329 -47
  83. package/src/components/footer/pager.component.ts +10 -0
  84. package/src/components/header/header-cell.component.ts +2 -1
  85. package/src/components/header/header.component.ts +1 -0
  86. package/src/datatable.module.ts +8 -6
  87. package/src/directives/resizeable.directive.ts +4 -2
  88. package/src/events.ts +3 -3
  89. package/src/themes/bootstrap.scss +10 -1
  90. package/src/themes/dark.scss +14 -0
  91. package/src/themes/material.scss +20 -5
  92. package/src/types/table-column.type.ts +43 -28
  93. package/src/utils/column-helper.ts +9 -1
  94. package/src/utils/column-prop-getters.spec.ts +44 -0
  95. package/src/utils/column.ts +0 -12
  96. package/src/utils/math.ts +1 -1
  97. package/test/index.ts +1 -0
  98. package/test/jasmine-matchers.d.ts +12 -0
  99. package/test/jasmine-matchers.ts +70 -0
  100. package/tslint.json +1 -1
@@ -59,3 +59,5 @@ bootstrap table theme
59
59
  font-size: 18px;
60
60
  line-height: 27px;
61
61
  padding: 0 3px; }
62
+ .ngx-datatable.bootstrap .datatable-summary-row .datatable-body-row .datatable-body-cell {
63
+ font-weight: bold; }
@@ -67,3 +67,9 @@
67
67
  font-size: 18px;
68
68
  line-height: 27px;
69
69
  padding: 0 3px; }
70
+ .ngx-datatable.dark .datatable-summary-row .datatable-body-row {
71
+ background-color: #14171f; }
72
+ .ngx-datatable.dark .datatable-summary-row .datatable-body-row:hover {
73
+ background-color: #14171f; }
74
+ .ngx-datatable.dark .datatable-summary-row .datatable-body-row .datatable-body-cell {
75
+ font-weight: bold; }
@@ -220,6 +220,12 @@
220
220
  font-size: 20px;
221
221
  line-height: 20px;
222
222
  padding: 0 3px; }
223
+ .ngx-datatable.material .datatable-summary-row .datatable-body-row {
224
+ background-color: #ddd; }
225
+ .ngx-datatable.material .datatable-summary-row .datatable-body-row:hover {
226
+ background-color: #ddd; }
227
+ .ngx-datatable.material .datatable-summary-row .datatable-body-row .datatable-body-cell {
228
+ font-weight: bold; }
223
229
 
224
230
  /**
225
231
  * Checkboxes
@@ -179,4 +179,18 @@ export interface TableColumn {
179
179
  * @memberOf TableColumn
180
180
  */
181
181
  headerCheckboxable?: boolean;
182
+ /**
183
+ * Summary function
184
+ *
185
+ * @type {(cells: any[]) => any}
186
+ * @memberOf TableColumn
187
+ */
188
+ summaryFunc?: (cells: any[]) => any;
189
+ /**
190
+ * Summary cell template ref
191
+ *
192
+ * @type {*}
193
+ * @memberOf TableColumn
194
+ */
195
+ summaryTemplate?: any;
182
196
  }
@@ -70,6 +70,12 @@ function translateTemplates(templates) {
70
70
  if (temp.cellTemplate) {
71
71
  col.cellTemplate = temp.cellTemplate;
72
72
  }
73
+ if (temp.summaryFunc) {
74
+ col.summaryFunc = temp.summaryFunc;
75
+ }
76
+ if (temp.summaryTemplate) {
77
+ col.summaryTemplate = temp.summaryTemplate;
78
+ }
73
79
  result.push(col);
74
80
  }
75
81
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../build/utils/column-helper.ts"],"names":[],"mappings":"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","file":"column-helper.js","sourceRoot":""}
1
+ {"version":3,"sources":["../../build/utils/column-helper.ts"],"names":[],"mappings":"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","file":"column-helper.js","sourceRoot":""}
@@ -27,7 +27,3 @@ export declare function columnsByPinArr(val: any): {
27
27
  type: string;
28
28
  columns: any;
29
29
  }[];
30
- export declare function allColumnsByPinArr(val: any): {
31
- type: string;
32
- columns: any;
33
- }[];
@@ -76,14 +76,4 @@ function columnsByPinArr(val) {
76
76
  return colsByPinArr;
77
77
  }
78
78
  exports.columnsByPinArr = columnsByPinArr;
79
- function allColumnsByPinArr(val) {
80
- var colsByPinArr = [];
81
- var colsByPin = columnsByPin(val);
82
- var colsTest = [];
83
- colsByPinArr.push({ type: 'left', columns: colsByPin['left'] });
84
- colsByPinArr.push({ type: 'center', columns: colsByPin['center'] });
85
- colsByPinArr.push({ type: 'right', columns: colsByPin['right'] });
86
- return colsByPinArr;
87
- }
88
- exports.allColumnsByPinArr = allColumnsByPinArr;
89
79
  //# sourceMappingURL=column.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../build/utils/column.ts"],"names":[],"mappings":"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","file":"column.js","sourceRoot":""}
1
+ {"version":3,"sources":["../../build/utils/column.ts"],"names":[],"mappings":"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","file":"column.js","sourceRoot":""}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":3,"metadata":{"columnsByPin":{"__symbolic":"function"},"columnGroupWidths":{"__symbolic":"function","parameters":["groups","all"],"value":{"left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"left"}]},"center":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"center"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"right"}]},"total":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Math"},"member":"floor"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"reference","name":"all"}]}]}}},"columnTotalWidth":{"__symbolic":"function"},"columnsTotalWidth":{"__symbolic":"function"},"columnsByPinArr":{"__symbolic":"function"},"allColumnsByPinArr":{"__symbolic":"function"}}},{"__symbolic":"module","version":1,"metadata":{"columnsByPin":{"__symbolic":"function"},"columnGroupWidths":{"__symbolic":"function","parameters":["groups","all"],"value":{"left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"left"}]},"center":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"center"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"right"}]},"total":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Math"},"member":"floor"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"reference","name":"all"}]}]}}},"columnTotalWidth":{"__symbolic":"function"},"columnsTotalWidth":{"__symbolic":"function"},"columnsByPinArr":{"__symbolic":"function"},"allColumnsByPinArr":{"__symbolic":"function"}}}]
1
+ [{"__symbolic":"module","version":3,"metadata":{"columnsByPin":{"__symbolic":"function"},"columnGroupWidths":{"__symbolic":"function","parameters":["groups","all"],"value":{"left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"left"}]},"center":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"center"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"right"}]},"total":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Math"},"member":"floor"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"reference","name":"all"}]}]}}},"columnTotalWidth":{"__symbolic":"function"},"columnsTotalWidth":{"__symbolic":"function"},"columnsByPinArr":{"__symbolic":"function"}}},{"__symbolic":"module","version":1,"metadata":{"columnsByPin":{"__symbolic":"function"},"columnGroupWidths":{"__symbolic":"function","parameters":["groups","all"],"value":{"left":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"left"}]},"center":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"center"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"groups"},"member":"right"}]},"total":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Math"},"member":"floor"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"columnTotalWidth"},"arguments":[{"__symbolic":"reference","name":"all"}]}]}}},"columnTotalWidth":{"__symbolic":"function"},"columnsTotalWidth":{"__symbolic":"function"},"columnsByPinArr":{"__symbolic":"function"}}}]
@@ -36,7 +36,7 @@ function scaleColumns(colsByGroup, maxWidth, totalFlexGrow) {
36
36
  var column = _a[_i];
37
37
  if (!column.canAutoResize) {
38
38
  maxWidth -= column.width;
39
- totalFlexGrow -= column.flexGrow;
39
+ totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;
40
40
  }
41
41
  else {
42
42
  column.width = 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../build/utils/math.ts"],"names":[],"mappings":"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","file":"math.js","sourceRoot":""}
1
+ {"version":3,"sources":["../../build/utils/math.ts"],"names":[],"mappings":"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","file":"math.js","sourceRoot":""}
@@ -5,17 +5,16 @@ import { DatatableGroupHeaderTemplateDirective } from './body-group-header-templ
5
5
  export class DatatableGroupHeaderDirective {
6
6
 
7
7
  /**
8
- * The detail row height is required especially
9
- * when virtual scroll is enabled.
8
+ * Row height is required when virtual scroll is enabled.
10
9
  */
11
10
  @Input() rowHeight: (number | ((group?: any, index?: number) => number)) = 0;
12
11
 
13
12
  @Input()
14
- @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef })
13
+ @ContentChild(DatatableGroupHeaderTemplateDirective, { read: TemplateRef })
15
14
  template: TemplateRef<any>;
16
15
 
17
16
  /**
18
- * Group visbility was toggled.
17
+ * Track toggling of group visibility
19
18
  */
20
19
  @Output() toggle: EventEmitter<any> = new EventEmitter();
21
20
 
@@ -30,7 +29,7 @@ export class DatatableGroupHeaderDirective {
30
29
  }
31
30
 
32
31
  /**
33
- * API method to expand all groups.
32
+ * Expand all groups
34
33
  */
35
34
  expandAllGroups(): void {
36
35
  this.toggle.emit({
@@ -40,7 +39,7 @@ export class DatatableGroupHeaderDirective {
40
39
  }
41
40
 
42
41
  /**
43
- * API method to collapse all groups.
42
+ * Collapse all groups
44
43
  */
45
44
  collapseAllGroups(): void {
46
45
  this.toggle.emit({
@@ -4,7 +4,7 @@ import {
4
4
  } from '@angular/core';
5
5
 
6
6
  import {
7
- allColumnsByPinArr, columnsByPin, columnGroupWidths, columnsByPinArr, translateXY, Keys
7
+ columnsByPin, columnGroupWidths, columnsByPinArr, translateXY, Keys
8
8
  } from '../../utils';
9
9
  import { ScrollbarHelper } from '../../services';
10
10
  import { MouseEvent, KeyboardEvent, Event } from '../../events';
@@ -30,7 +30,7 @@ import { MouseEvent, KeyboardEvent, Event } from '../../events';
30
30
  [displayCheck]="displayCheck"
31
31
  (activate)="onActivate($event, ii)">
32
32
  </datatable-body-cell>
33
- </div>
33
+ </div>
34
34
  `
35
35
  })
36
36
  export class DataTableBodyRowComponent implements DoCheck {
@@ -38,6 +38,7 @@ export class DataTableBodyRowComponent implements DoCheck {
38
38
  @Input() set columns(val: any[]) {
39
39
  this._columns = val;
40
40
  this.recalculateColumns(val);
41
+ this.buildStylesByGroup();
41
42
  }
42
43
 
43
44
  get columns(): any[] {
@@ -47,12 +48,12 @@ export class DataTableBodyRowComponent implements DoCheck {
47
48
  @Input() set innerWidth(val: number) {
48
49
  if (this._columns) {
49
50
  const colByPin = columnsByPin(this._columns);
50
- this._columnGroupWidths = columnGroupWidths(colByPin, colByPin);
51
+ this._columnGroupWidths = columnGroupWidths(colByPin, colByPin);
51
52
  }
52
53
 
53
54
  this._innerWidth = val;
54
55
  this.recalculateColumns();
55
- this.buildStylesByGroup();
56
+ this.buildStylesByGroup();
56
57
  }
57
58
 
58
59
  get innerWidth(): number {
@@ -123,7 +124,7 @@ export class DataTableBodyRowComponent implements DoCheck {
123
124
  constructor(
124
125
  private differs: KeyValueDiffers,
125
126
  @SkipSelf() private scrollbarHelper: ScrollbarHelper,
126
- private cd: ChangeDetectorRef,
127
+ private cd: ChangeDetectorRef,
127
128
  element: ElementRef) {
128
129
  this._element = element.nativeElement;
129
130
  this._rowDiffer = differs.find({}).create();
@@ -134,7 +135,7 @@ export class DataTableBodyRowComponent implements DoCheck {
134
135
  this.cd.markForCheck();
135
136
  }
136
137
  }
137
-
138
+
138
139
  trackByGroups(index: number, colGroup: any): any {
139
140
  return colGroup.type;
140
141
  }
@@ -215,7 +216,7 @@ export class DataTableBodyRowComponent implements DoCheck {
215
216
  recalculateColumns(val: any[] = this.columns): void {
216
217
  this._columns = val;
217
218
  const colsByPin = columnsByPin(this._columns);
218
- this._columnsByPin = allColumnsByPinArr(this._columns);
219
+ this._columnsByPin = columnsByPinArr(this._columns);
219
220
  this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);
220
221
  }
221
222
 
@@ -6,6 +6,7 @@ import {
6
6
  DataTableRowWrapperComponent,
7
7
  DataTableBodyCellComponent,
8
8
  DataTableSelectionComponent,
9
+ DataTableSummaryRowComponent,
9
10
  ProgressBarComponent,
10
11
  ScrollerComponent
11
12
  } from '.';
@@ -19,12 +20,13 @@ describe('DataTableBodyComponent', () => {
19
20
  // provide our implementations or mocks to the dependency injector
20
21
  beforeEach(() => {
21
22
  TestBed.configureTestingModule({
22
- declarations: [
23
+ declarations: [
23
24
  DataTableBodyComponent,
24
25
  DataTableBodyRowComponent,
25
26
  DataTableRowWrapperComponent,
26
27
  DataTableBodyCellComponent,
27
28
  DataTableSelectionComponent,
29
+ DataTableSummaryRowComponent,
28
30
  ProgressBarComponent,
29
31
  ScrollerComponent
30
32
  ],
@@ -37,7 +39,7 @@ describe('DataTableBodyComponent', () => {
37
39
  fixture = TestBed.createComponent(DataTableBodyComponent);
38
40
  component = fixture.componentInstance;
39
41
  element = fixture.nativeElement;
40
- });
42
+ });
41
43
  }));
42
44
 
43
45
  describe('fixture', () => {
@@ -46,7 +48,6 @@ describe('DataTableBodyComponent', () => {
46
48
  });
47
49
  });
48
50
 
49
-
50
51
  describe('Paging', () => {
51
52
 
52
53
  it('should have correct indexes for normal paging with rows > pageSize', () => {
@@ -55,7 +56,7 @@ describe('DataTableBodyComponent', () => {
55
56
  component.pageSize = 10;
56
57
  component.offset = 1;
57
58
  component.rowCount = 20;
58
- let expectedIndexes = { first: 10, last: 20};
59
+ const expectedIndexes = { first: 10, last: 20};
59
60
  component.updateIndexes();
60
61
  expect(component.indexes).toEqual(expectedIndexes);
61
62
  });
@@ -66,7 +67,7 @@ describe('DataTableBodyComponent', () => {
66
67
  component.pageSize = 5;
67
68
  component.offset = 1;
68
69
  component.rowCount = 9;
69
- let expectedIndexes = { first: 5, last: 9};
70
+ const expectedIndexes = { first: 5, last: 9};
70
71
  component.updateIndexes();
71
72
  expect(component.indexes).toEqual(expectedIndexes);
72
73
  });
@@ -77,7 +78,7 @@ describe('DataTableBodyComponent', () => {
77
78
  component.pageSize = 10;
78
79
  component.offset = 1;
79
80
  component.rowCount = 20;
80
- let expectedIndexes = { first: 0, last: 10};
81
+ const expectedIndexes = { first: 0, last: 10};
81
82
  component.updateIndexes();
82
83
  expect(component.indexes).toEqual(expectedIndexes);
83
84
  });
@@ -88,7 +89,7 @@ describe('DataTableBodyComponent', () => {
88
89
  component.pageSize = 5;
89
90
  component.offset = 1;
90
91
  component.rowCount = 9;
91
- let expectedIndexes = { first: 0, last: 5};
92
+ const expectedIndexes = { first: 0, last: 5};
92
93
  component.updateIndexes();
93
94
  expect(component.indexes).toEqual(expectedIndexes);
94
95
  });
@@ -30,6 +30,14 @@ import { MouseEvent } from '../../events';
30
30
  [scrollHeight]="scrollHeight"
31
31
  [scrollWidth]="columnGroupWidths?.total"
32
32
  (scroll)="onBodyScroll($event)">
33
+ <datatable-summary-row
34
+ *ngIf="summaryRow && summaryPosition === 'top'"
35
+ [rowHeight]="summaryHeight"
36
+ [offsetX]="offsetX"
37
+ [innerWidth]="innerWidth"
38
+ [rows]="rows"
39
+ [columns]="columns">
40
+ </datatable-summary-row>
33
41
  <datatable-row-wrapper
34
42
  [groupedRows]="groupedRows"
35
43
  *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn;"
@@ -76,6 +84,14 @@ import { MouseEvent } from '../../events';
76
84
  </datatable-body-row>
77
85
  </ng-template>
78
86
  </datatable-row-wrapper>
87
+ <datatable-summary-row
88
+ *ngIf="summaryRow && summaryPosition === 'bottom'"
89
+ [rowHeight]="summaryHeight"
90
+ [offsetX]="offsetX"
91
+ [innerWidth]="innerWidth"
92
+ [rows]="rows"
93
+ [columns]="columns">
94
+ </datatable-summary-row>
79
95
  </datatable-scroller>
80
96
  <div
81
97
  class="empty-row"
@@ -95,7 +111,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
95
111
  @Input() scrollbarH: boolean;
96
112
  @Input() loadingIndicator: boolean;
97
113
  @Input() externalPaging: boolean;
98
- @Input() rowHeight: number;
114
+ @Input() rowHeight: number | ((row: any) => number);
99
115
  @Input() offsetX: number;
100
116
  @Input() emptyMessage: string;
101
117
  @Input() selectionType: SelectionType;
@@ -112,6 +128,9 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
112
128
  @Input() innerWidth: number;
113
129
  @Input() groupRowsBy: string;
114
130
  @Input() virtualization: boolean;
131
+ @Input() summaryRow: boolean;
132
+ @Input() summaryPosition: string;
133
+ @Input() summaryHeight: number;
115
134
 
116
135
  @Input() set pageSize(val: number) {
117
136
  this._pageSize = val;
@@ -207,7 +226,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
207
226
  * calculate scroll height automatically (as height will be undefined).
208
227
  */
209
228
  get scrollHeight(): number | undefined {
210
- if (this.scrollbarV) {
229
+ if (this.scrollbarV && this.rowCount) {
211
230
  return this.rowHeightsCache.query(this.rowCount - 1);
212
231
  }
213
232
  // avoid TS7030: Not all code paths return a value.
@@ -400,14 +419,16 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
400
419
  * Get the row height
401
420
  */
402
421
  getRowHeight(row: any): number {
403
- let rowHeight = this.rowHeight;
422
+ let height;
404
423
 
405
424
  // if its a function return it
406
425
  if (typeof this.rowHeight === 'function') {
407
- rowHeight = this.rowHeight(row);
426
+ height = this.rowHeight(row);
427
+ } else {
428
+ height = this.rowHeight;
408
429
  }
409
430
 
410
- return rowHeight;
431
+ return height;
411
432
  }
412
433
 
413
434
  /**
@@ -525,7 +546,7 @@ export class DataTableBodyComponent implements OnInit, OnDestroy {
525
546
  // If virtual rows are not needed
526
547
  // We render all in one go
527
548
  first = 0;
528
- last = this.rowCount - 1;
549
+ last = this.rowCount;
529
550
  }
530
551
  } else {
531
552
  // The server is handling paging and will pass an array that begins with the
@@ -7,3 +7,4 @@ export * from './body-row-wrapper.component';
7
7
  export * from './selection.component';
8
8
  export * from './body-group-header.directive';
9
9
  export * from './body-group-header-template.directive';
10
+ export * from './summary';
@@ -0,0 +1 @@
1
+ export * from './summary-row.component';
@@ -0,0 +1,131 @@
1
+ import { async, TestBed, ComponentFixture } from '@angular/core/testing';
2
+ import { DebugElement, PipeTransform } from '@angular/core';
3
+ import { By } from '@angular/platform-browser';
4
+ import {} from 'jasmine';
5
+
6
+ import { DataTableBodyRowComponent } from '../body-row.component';
7
+ import { DataTableBodyCellComponent } from '../body-cell.component';
8
+ import {
9
+ DataTableSummaryRowComponent
10
+ } from './summary-row.component';
11
+ import { ISummaryColumn } from './';
12
+ import { ScrollbarHelper } from '../../../';
13
+ import { setColumnDefaults } from '../../../utils';
14
+
15
+ describe('DataTableSummaryRowComponent', () => {
16
+ let fixture: ComponentFixture<DataTableSummaryRowComponent>;
17
+ let component: DataTableSummaryRowComponent;
18
+ let element: DebugElement;
19
+
20
+ let rows: any[];
21
+ let columns: ISummaryColumn[];
22
+
23
+ beforeEach(() => {
24
+ rows = [
25
+ { col1: 'test', col2: 20 },
26
+ { col1: 'test1', col2: 30 },
27
+ ];
28
+ columns = [
29
+ { prop: 'col1' }, { prop: 'col2' }
30
+ ];
31
+ setColumnDefaults(columns);
32
+ });
33
+
34
+ beforeEach(async(() => {
35
+ TestBed.configureTestingModule({
36
+ declarations: [
37
+ DataTableSummaryRowComponent,
38
+ DataTableBodyRowComponent,
39
+ DataTableBodyCellComponent,
40
+ ],
41
+ providers: [
42
+ ScrollbarHelper,
43
+ ]
44
+ }).compileComponents();
45
+ }));
46
+
47
+ beforeEach(() => {
48
+ fixture = TestBed.createComponent(DataTableSummaryRowComponent);
49
+ component = fixture.componentInstance;
50
+ element = fixture.debugElement;
51
+ fixture.detectChanges();
52
+ });
53
+
54
+ function triggerChange() {
55
+ component.ngOnChanges();
56
+ fixture.detectChanges();
57
+ }
58
+
59
+ describe('fixture', () => {
60
+ it('should have a component instance', () => {
61
+ expect(component).toBeTruthy();
62
+ });
63
+ });
64
+
65
+ describe('Visibility', () => {
66
+ it('should not be visible when there are no columns', () => {
67
+ component.rows = rows;
68
+ triggerChange();
69
+ expect(element.query(By.css('datatable-body-row'))).toBeNull();
70
+ });
71
+
72
+ it('should not be visible when there are no rows', () => {
73
+ component.columns = columns;
74
+ triggerChange();
75
+ expect(element.query(By.css('datatable-body-row'))).toBeNull();
76
+ });
77
+
78
+ it('should be visible when there are rows and columns', () => {
79
+ component.columns = columns;
80
+ component.rows = rows;
81
+ triggerChange();
82
+ expect(element.query(By.css('datatable-body-row'))).not.toBeNull();
83
+ });
84
+ });
85
+
86
+ describe('Computing', () => {
87
+ beforeEach(() => {
88
+ component.columns = columns;
89
+ component.rows = rows;
90
+ triggerChange();
91
+ });
92
+
93
+ it('should use default sum function when no other provided', () => {
94
+ expect(component.summaryRow['col1']).toEqual(rows[0]['col1'] + rows[1]['col1']);
95
+ expect(component.summaryRow['col2']).toEqual(rows[0]['col2'] + rows[1]['col2']);
96
+ });
97
+
98
+ it('should use provided summary function', () => {
99
+ const sum1 = 22;
100
+ const sum2 = 'test sum';
101
+ const spy1 = jasmine.createSpy('spy1').and.returnValue(sum1);
102
+ const spy2 = jasmine.createSpy('spy2').and.returnValue(sum2);
103
+ columns[0].summaryFunc = spy1;
104
+ columns[1].summaryFunc = spy2;
105
+
106
+ triggerChange();
107
+
108
+ expect(spy1.calls.any()).toBeTruthy();
109
+ expect(spy2.calls.any()).toBeTruthy();
110
+
111
+ expect(spy1.calls.mostRecent().args[0]).toEqual([ rows[0]['col1'], rows[1]['col1'] ]);
112
+ expect(spy2.calls.mostRecent().args[0]).toEqual([ rows[0]['col2'], rows[1]['col2'] ]);
113
+
114
+ expect(component.summaryRow['col1']).toEqual(sum1);
115
+ expect(component.summaryRow['col2']).toEqual(sum2);
116
+ });
117
+
118
+ describe('Pipe', () => {
119
+ it('should use provided pipe', () => {
120
+ const transformed = '$22';
121
+ const transformSpy = jasmine.createSpy('transform').and.returnValue(transformed);
122
+
123
+ columns[0].pipe = { transform: transformSpy };
124
+ triggerChange();
125
+
126
+ expect(transformSpy.calls.any()).toBeTruthy();
127
+ expect(component.summaryRow['col1']).toEqual(transformed);
128
+ });
129
+ });
130
+ });
131
+ });
@@ -0,0 +1,74 @@
1
+ import { Component, Input, OnChanges, PipeTransform, TemplateRef } from '@angular/core';
2
+
3
+ export interface ISummaryColumn {
4
+ summaryFunc?: (cells: any[]) => any;
5
+ summaryTemplate?: TemplateRef<any>;
6
+
7
+ prop: string;
8
+ pipe?: PipeTransform;
9
+ }
10
+
11
+ function defaultSumFunc(cells: any[]): any {
12
+ return cells
13
+ .filter(cell => !!cell)
14
+ .reduce((res, cell) => res + cell);
15
+ }
16
+
17
+ @Component({
18
+ selector: 'datatable-summary-row',
19
+ template: `
20
+ <datatable-body-row
21
+ *ngIf="summaryRow && _internalColumns"
22
+ tabindex="-1"
23
+ [innerWidth]="innerWidth"
24
+ [offsetX]="offsetX"
25
+ [columns]="_internalColumns"
26
+ [rowHeight]="rowHeight"
27
+ [row]="summaryRow"
28
+ [rowIndex]="-1">
29
+ </datatable-body-row>
30
+ `,
31
+ host: {
32
+ class: 'datatable-summary-row'
33
+ }
34
+ })
35
+
36
+ export class DataTableSummaryRowComponent implements OnChanges {
37
+ @Input() rows: any[];
38
+ @Input() columns: ISummaryColumn[];
39
+
40
+ @Input() rowHeight: number;
41
+ @Input() offsetX: number;
42
+ @Input() innerWidth: number;
43
+
44
+ _internalColumns: ISummaryColumn[];
45
+ summaryRow = {};
46
+
47
+ ngOnChanges() {
48
+ if (!this.columns || !this.rows) { return; }
49
+ this.updateInternalColumns();
50
+ this.updateValues();
51
+ }
52
+
53
+ private updateInternalColumns() {
54
+ this._internalColumns = this.columns.map(col => ({
55
+ ...col,
56
+ cellTemplate: col.summaryTemplate
57
+ }));
58
+ }
59
+
60
+ private updateValues() {
61
+ this.summaryRow = {};
62
+
63
+ this.columns
64
+ .filter(col => !col.summaryTemplate)
65
+ .forEach(col => {
66
+ const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);
67
+ const sumFunc = col.summaryFunc || defaultSumFunc;
68
+
69
+ this.summaryRow[col.prop] = col.pipe ?
70
+ col.pipe.transform(sumFunc(cellsFromSingleColumn)) :
71
+ sumFunc(cellsFromSingleColumn);
72
+ });
73
+ }
74
+ }