angular-slickgrid 4.2.0 → 4.2.1

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 (232) hide show
  1. package/{dist/angular-slickgrid.d.ts → angular-slickgrid.d.ts} +0 -0
  2. package/{dist/app → app}/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +0 -0
  3. package/{dist/app → app}/modules/angular-slickgrid/constants.d.ts +0 -0
  4. package/{dist/app → app}/modules/angular-slickgrid/extensions/index.d.ts +0 -0
  5. package/{dist/app → app}/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -0
  6. package/{dist/app → app}/modules/angular-slickgrid/global-grid-options.d.ts +0 -0
  7. package/{dist/app → app}/modules/angular-slickgrid/index.d.ts +0 -0
  8. package/{dist/app → app}/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +0 -0
  9. package/{dist/app → app}/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +0 -0
  10. package/{dist/app → app}/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +0 -0
  11. package/{dist/app → app}/modules/angular-slickgrid/models/gridOption.interface.d.ts +0 -0
  12. package/{dist/app → app}/modules/angular-slickgrid/models/index.d.ts +0 -0
  13. package/{dist/app → app}/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +0 -0
  14. package/{dist/app → app}/modules/angular-slickgrid/models/slickGrid.interface.d.ts +0 -0
  15. package/{dist/app → app}/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +0 -0
  16. package/{dist/app → app}/modules/angular-slickgrid/services/angularUtil.service.d.ts +0 -0
  17. package/{dist/app → app}/modules/angular-slickgrid/services/bsDropdown.service.d.ts +0 -0
  18. package/{dist/app → app}/modules/angular-slickgrid/services/container.service.d.ts +0 -0
  19. package/{dist/app → app}/modules/angular-slickgrid/services/index.d.ts +0 -0
  20. package/{dist/app → app}/modules/angular-slickgrid/services/translater.service.d.ts +0 -0
  21. package/{dist/app → app}/modules/angular-slickgrid/services/utilities.d.ts +0 -0
  22. package/{dist/app → app}/modules/angular-slickgrid/slickgrid-config.d.ts +0 -0
  23. package/docs/assets/lib/multiple-select/README.md +17 -0
  24. package/{dist/esm2020 → esm2020}/angular-slickgrid.mjs +0 -0
  25. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -0
  26. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/constants.mjs +0 -0
  27. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/index.mjs +0 -0
  28. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -0
  29. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/global-grid-options.mjs +0 -0
  30. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/index.mjs +0 -0
  31. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +0 -0
  32. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -0
  33. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -0
  34. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -0
  35. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/index.mjs +0 -0
  36. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -0
  37. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +0 -0
  38. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -0
  39. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/angularUtil.service.mjs +0 -0
  40. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +0 -0
  41. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/container.service.mjs +0 -0
  42. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/index.mjs +0 -0
  43. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/translater.service.mjs +0 -0
  44. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/utilities.mjs +0 -0
  45. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/slickgrid-config.mjs +0 -0
  46. package/{dist/esm2020 → esm2020}/public_api.mjs +0 -0
  47. package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs +0 -0
  48. package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs.map +0 -0
  49. package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs +0 -0
  50. package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs.map +0 -0
  51. package/{dist/i18n → i18n}/en.json +0 -0
  52. package/{dist/i18n → i18n}/fr.json +0 -0
  53. package/package.json +25 -110
  54. package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
  55. package/.browserslistrc +0 -12
  56. package/.codecov.yml +0 -17
  57. package/.editorconfig +0 -18
  58. package/.eslintrc.json +0 -50
  59. package/.github/CODE_OF_CONDUCT.md +0 -76
  60. package/.github/FUNDING.yml +0 -8
  61. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -54
  62. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  63. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -44
  64. package/.github/renovate.json5 +0 -26
  65. package/.github/stale.yml +0 -7
  66. package/.github/workflows/main.yml +0 -83
  67. package/.vscode/extensions.json +0 -9
  68. package/.vscode/launch.json +0 -72
  69. package/.vscode/settings.json +0 -7
  70. package/.vscode/tasks.json +0 -77
  71. package/CHANGELOG.md +0 -1172
  72. package/angular.json +0 -148
  73. package/dist/LICENSE +0 -20
  74. package/dist/README.md +0 -182
  75. package/dist/package.json +0 -79
  76. package/global.d.ts +0 -1
  77. package/ngcc.config.js +0 -13
  78. package/screenshots/column-picker.png +0 -0
  79. package/screenshots/composite-editor.png +0 -0
  80. package/screenshots/draggable-grouping.png +0 -0
  81. package/screenshots/editors.png +0 -0
  82. package/screenshots/export-to-file.png +0 -0
  83. package/screenshots/filter_and_sort.png +0 -0
  84. package/screenshots/formatters.png +0 -0
  85. package/screenshots/frozen.png +0 -0
  86. package/screenshots/multipleSelectFilter.png +0 -0
  87. package/screenshots/pagination.png +0 -0
  88. package/screenshots/selectFilter.png +0 -0
  89. package/screenshots/singleFilter.png +0 -0
  90. package/src/app/app-routing.module.ts +0 -83
  91. package/src/app/app.component.html +0 -160
  92. package/src/app/app.component.scss +0 -65
  93. package/src/app/app.component.ts +0 -10
  94. package/src/app/app.module.ts +0 -175
  95. package/src/app/examples/custom-angularComponentEditor.ts +0 -184
  96. package/src/app/examples/custom-angularComponentFilter.ts +0 -126
  97. package/src/app/examples/custom-inputEditor.ts +0 -124
  98. package/src/app/examples/custom-inputFilter.ts +0 -142
  99. package/src/app/examples/custom-titleFormatter.component.ts +0 -8
  100. package/src/app/examples/editor-ng-select.component.ts +0 -37
  101. package/src/app/examples/filter-ng-select.component.ts +0 -32
  102. package/src/app/examples/grid-additem.component.html +0 -48
  103. package/src/app/examples/grid-additem.component.ts +0 -272
  104. package/src/app/examples/grid-angular.component.html +0 -79
  105. package/src/app/examples/grid-angular.component.scss +0 -28
  106. package/src/app/examples/grid-angular.component.ts +0 -370
  107. package/src/app/examples/grid-autoheight.component.html +0 -52
  108. package/src/app/examples/grid-autoheight.component.ts +0 -147
  109. package/src/app/examples/grid-basic.component.html +0 -29
  110. package/src/app/examples/grid-basic.component.ts +0 -82
  111. package/src/app/examples/grid-clientside.component.html +0 -51
  112. package/src/app/examples/grid-clientside.component.ts +0 -293
  113. package/src/app/examples/grid-colspan.component.html +0 -39
  114. package/src/app/examples/grid-colspan.component.scss +0 -11
  115. package/src/app/examples/grid-colspan.component.ts +0 -155
  116. package/src/app/examples/grid-composite-editor.component.html +0 -79
  117. package/src/app/examples/grid-composite-editor.component.scss +0 -19
  118. package/src/app/examples/grid-composite-editor.component.ts +0 -948
  119. package/src/app/examples/grid-contextmenu.component.html +0 -62
  120. package/src/app/examples/grid-contextmenu.component.scss +0 -44
  121. package/src/app/examples/grid-contextmenu.component.ts +0 -473
  122. package/src/app/examples/grid-custom-tooltip.component.html +0 -25
  123. package/src/app/examples/grid-custom-tooltip.component.scss +0 -77
  124. package/src/app/examples/grid-custom-tooltip.component.ts +0 -483
  125. package/src/app/examples/grid-draggrouping.component.html +0 -93
  126. package/src/app/examples/grid-draggrouping.component.ts +0 -397
  127. package/src/app/examples/grid-editor.component.html +0 -88
  128. package/src/app/examples/grid-editor.component.ts +0 -699
  129. package/src/app/examples/grid-formatter.component.html +0 -26
  130. package/src/app/examples/grid-formatter.component.ts +0 -162
  131. package/src/app/examples/grid-frozen.component.html +0 -65
  132. package/src/app/examples/grid-frozen.component.scss +0 -11
  133. package/src/app/examples/grid-frozen.component.ts +0 -303
  134. package/src/app/examples/grid-graphql-nopage.component.html +0 -33
  135. package/src/app/examples/grid-graphql-nopage.component.scss +0 -9
  136. package/src/app/examples/grid-graphql-nopage.component.ts +0 -242
  137. package/src/app/examples/grid-graphql.component.html +0 -87
  138. package/src/app/examples/grid-graphql.component.ts +0 -304
  139. package/src/app/examples/grid-grouping.component.html +0 -80
  140. package/src/app/examples/grid-grouping.component.ts +0 -313
  141. package/src/app/examples/grid-headerbutton.component.html +0 -31
  142. package/src/app/examples/grid-headerbutton.component.scss +0 -10
  143. package/src/app/examples/grid-headerbutton.component.ts +0 -233
  144. package/src/app/examples/grid-headermenu.component.html +0 -31
  145. package/src/app/examples/grid-headermenu.component.scss +0 -25
  146. package/src/app/examples/grid-headermenu.component.ts +0 -159
  147. package/src/app/examples/grid-localization.component.html +0 -54
  148. package/src/app/examples/grid-localization.component.ts +0 -293
  149. package/src/app/examples/grid-menu.component.html +0 -37
  150. package/src/app/examples/grid-menu.component.scss +0 -28
  151. package/src/app/examples/grid-menu.component.ts +0 -229
  152. package/src/app/examples/grid-odata.component.html +0 -116
  153. package/src/app/examples/grid-odata.component.ts +0 -441
  154. package/src/app/examples/grid-range.component.html +0 -74
  155. package/src/app/examples/grid-range.component.ts +0 -291
  156. package/src/app/examples/grid-remote.component.html +0 -37
  157. package/src/app/examples/grid-remote.component.ts +0 -153
  158. package/src/app/examples/grid-resize-by-content.component.html +0 -62
  159. package/src/app/examples/grid-resize-by-content.component.scss +0 -19
  160. package/src/app/examples/grid-resize-by-content.component.ts +0 -780
  161. package/src/app/examples/grid-rowdetail.component.html +0 -35
  162. package/src/app/examples/grid-rowdetail.component.ts +0 -205
  163. package/src/app/examples/grid-rowmove.component.html +0 -49
  164. package/src/app/examples/grid-rowmove.component.ts +0 -234
  165. package/src/app/examples/grid-rowselection.component.html +0 -76
  166. package/src/app/examples/grid-rowselection.component.ts +0 -267
  167. package/src/app/examples/grid-state.component.html +0 -36
  168. package/src/app/examples/grid-state.component.ts +0 -259
  169. package/src/app/examples/grid-tabs.component.html +0 -35
  170. package/src/app/examples/grid-tabs.component.ts +0 -115
  171. package/src/app/examples/grid-trading.component.html +0 -58
  172. package/src/app/examples/grid-trading.component.scss +0 -49
  173. package/src/app/examples/grid-trading.component.ts +0 -319
  174. package/src/app/examples/grid-tree-data-hierarchical.component.html +0 -79
  175. package/src/app/examples/grid-tree-data-hierarchical.component.scss +0 -47
  176. package/src/app/examples/grid-tree-data-hierarchical.component.ts +0 -311
  177. package/src/app/examples/grid-tree-data-parent-child.component.html +0 -108
  178. package/src/app/examples/grid-tree-data-parent-child.component.scss +0 -10
  179. package/src/app/examples/grid-tree-data-parent-child.component.ts +0 -351
  180. package/src/app/examples/home.component.html +0 -41
  181. package/src/app/examples/home.component.ts +0 -9
  182. package/src/app/examples/rowdetail-preload.component.ts +0 -10
  183. package/src/app/examples/rowdetail-view.component.html +0 -36
  184. package/src/app/examples/rowdetail-view.component.ts +0 -54
  185. package/src/app/examples/swt-common-grid-pagination.component.ts +0 -156
  186. package/src/app/examples/swt-common-grid-test.component.html +0 -30
  187. package/src/app/examples/swt-common-grid-test.component.ts +0 -219
  188. package/src/app/examples/swt-common-grid.component.ts +0 -436
  189. package/src/app/examples/swt-logger.service.ts +0 -165
  190. package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.html +0 -4
  191. package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +0 -1395
  192. package/src/app/modules/angular-slickgrid/constants.ts +0 -97
  193. package/src/app/modules/angular-slickgrid/extensions/index.ts +0 -1
  194. package/src/app/modules/angular-slickgrid/extensions/slickRowDetailView.ts +0 -375
  195. package/src/app/modules/angular-slickgrid/global-grid-options.ts +0 -245
  196. package/src/app/modules/angular-slickgrid/index.ts +0 -11
  197. package/src/app/modules/angular-slickgrid/models/angularComponentOutput.interface.ts +0 -6
  198. package/src/app/modules/angular-slickgrid/models/angularGridInstance.interface.ts +0 -68
  199. package/src/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.ts +0 -37
  200. package/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +0 -12
  201. package/src/app/modules/angular-slickgrid/models/index.ts +0 -6
  202. package/src/app/modules/angular-slickgrid/models/rowDetailView.interface.ts +0 -33
  203. package/src/app/modules/angular-slickgrid/models/slickGrid.interface.ts +0 -7
  204. package/src/app/modules/angular-slickgrid/modules/angular-slickgrid.module.ts +0 -37
  205. package/src/app/modules/angular-slickgrid/services/angularUtil.service.ts +0 -48
  206. package/src/app/modules/angular-slickgrid/services/bsDropdown.service.ts +0 -142
  207. package/src/app/modules/angular-slickgrid/services/container.service.ts +0 -24
  208. package/src/app/modules/angular-slickgrid/services/index.ts +0 -5
  209. package/src/app/modules/angular-slickgrid/services/translater.service.ts +0 -38
  210. package/src/app/modules/angular-slickgrid/services/utilities.ts +0 -19
  211. package/src/app/modules/angular-slickgrid/slickgrid-config.ts +0 -10
  212. package/src/app/slickgrid-custom-variables.scss +0 -10
  213. package/src/assets/.gitkeep +0 -0
  214. package/src/assets/data/collection_100_numbers.json +0 -12
  215. package/src/assets/data/collection_500_numbers.json +0 -52
  216. package/src/assets/data/countries.json +0 -245
  217. package/src/assets/data/country_names.json +0 -245
  218. package/src/assets/data/customers_100.json +0 -102
  219. package/src/assets/i18n/en.json +0 -90
  220. package/src/assets/i18n/fr.json +0 -91
  221. package/src/environments/environment.prod.ts +0 -3
  222. package/src/environments/environment.ts +0 -8
  223. package/src/favicon.ico +0 -0
  224. package/src/index.html +0 -18
  225. package/src/main.ts +0 -13
  226. package/src/polyfills.ts +0 -52
  227. package/src/public_api.ts +0 -1
  228. package/src/styles.scss +0 -66
  229. package/src/typings.d.ts +0 -10
  230. package/tsconfig.app.json +0 -25
  231. package/tsconfig.json +0 -40
  232. package/tsconfig.spec.json +0 -23
@@ -1,80 +0,0 @@
1
- <div id="demo-container" class="container-fluid">
2
- <h2>
3
- {{title}}
4
- <span class="float-end">
5
- <a style="font-size: 18px"
6
- target="_blank"
7
- href="https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/examples/grid-grouping.component.ts">
8
- <span class="fa fa-link"></span> code
9
- </a>
10
- </span>
11
- </h2>
12
- <div class="subtitle"
13
- [innerHTML]="subTitle"></div>
14
-
15
- <div class="row">
16
- <div class="col-sm-12">
17
- <button class="btn btn-outline-secondary btn-xs" data-test="add-500-rows-btn" (click)="loadData(500)">
18
- 500 rows
19
- </button>
20
- <button class="btn btn-outline-secondary btn-xs" data-test="add-50k-rows-btn" (click)="loadData(50000)">
21
- 50k rows
22
- </button>
23
- <button class="btn btn-outline-secondary btn-xs" data-test="clear-grouping-btn" (click)="clearGrouping()">
24
- <i class="fa fa-times"></i> Clear grouping
25
- </button>
26
- <button class="btn btn-outline-secondary btn-xs" data-test="collapse-all-btn" (click)="collapseAllGroups()">
27
- <i class="fa fa-compress"></i> Collapse all groups
28
- </button>
29
- <button class="btn btn-outline-secondary btn-xs" data-test="expand-all-btn" (click)="expandAllGroups()">
30
- <i class="fa fa-expand"></i> Expand all groups
31
- </button>
32
- <button class="btn btn-outline-secondary btn-xs" data-test="export-excel-btn" (click)="exportToExcel()">
33
- <i class="fa fa-file-excel-o text-success"></i> Export to Excel
34
- </button>
35
- </div>
36
- </div>
37
- <hr />
38
- <div class="row">
39
- <div class="col-sm-12">
40
- <button class="btn btn-outline-secondary btn-xs" data-test="group-duration-sort-value-btn"
41
- (click)="groupByDuration()">
42
- Group by duration &amp; sort groups by value
43
- </button>
44
- <button class="btn btn-outline-secondary btn-xs" data-test="group-duration-sort-count-btn"
45
- (click)="groupByDurationOrderByCount(false)">
46
- Group by duration &amp; sort groups by count
47
- </button>
48
- </div>
49
- </div>
50
- <div class="row">
51
- <div class="col-sm-12">
52
- <button class="btn btn-outline-secondary btn-xs" data-test="group-duration-sort-count-collapse-btn"
53
- (click)="groupByDurationOrderByCount(true)">
54
- Group by duration &amp; sort groups by count, aggregate collapsed
55
- </button>
56
- <button class="btn btn-outline-secondary btn-xs" data-test="group-duration-effort-btn"
57
- (click)="groupByDurationEffortDriven()">
58
- Group by duration then effort-driven
59
- </button>
60
- <button class="btn btn-outline-secondary btn-xs" data-test="group-duration-effort-percent-btn"
61
- (click)="groupByDurationEffortDrivenPercent()">
62
- Group by duration then effort-driven then percent.
63
- </button>
64
- <span [hidden]="!processing">
65
- <i class="fa fa-refresh fa-spin fa-lg fa-fw"></i>
66
- </span>
67
- </div>
68
- </div>
69
-
70
- <angular-slickgrid gridId="grid14"
71
- [dataset]="dataset"
72
- [columnDefinitions]="columnDefinitions"
73
- [gridOptions]="gridOptions"
74
- (onBeforeExportToTextFile)="processing = true"
75
- (onAfterExportToTextFile)="processing = false"
76
- (onBeforeExportToExcel)="processing = true"
77
- (onAfterExportToExcel)="processing = false"
78
- (onAngularGridCreated)="angularGridReady($event.detail)">
79
- </angular-slickgrid>
80
- </div>
@@ -1,313 +0,0 @@
1
- import { Component, OnInit, } from '@angular/core';
2
- import { ExcelExportService } from '@slickgrid-universal/excel-export';
3
- import { TextExportService } from '@slickgrid-universal/text-export';
4
-
5
- import {
6
- AngularGridInstance,
7
- Aggregators,
8
- Column,
9
- DelimiterType,
10
- FieldType,
11
- FileType,
12
- Filters,
13
- Formatters,
14
- GridOption,
15
- Grouping,
16
- GroupTotalFormatters,
17
- SortDirectionNumber,
18
- SortComparers,
19
- } from './../modules/angular-slickgrid';
20
-
21
- @Component({
22
- templateUrl: './grid-grouping.component.html'
23
- })
24
- export class GridGroupingComponent implements OnInit {
25
- title = 'Example 14: Grouping & Aggregators';
26
- subTitle = `
27
- (<a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/Grouping-&-Aggregators" target="_blank">Wiki docs</a>)
28
- <ul>
29
- <li>
30
- Fully dynamic and interactive multi-level grouping with filtering and aggregates over 50'000 items
31
- </li>
32
- <li>Each grouping level can have its own aggregates (over child rows, child groups, or all descendant rows)..</li>
33
- </ul>
34
- `;
35
-
36
- angularGrid!: AngularGridInstance;
37
- columnDefinitions!: Column[];
38
- gridOptions!: GridOption;
39
- dataset!: any[];
40
- gridObj: any;
41
- dataviewObj: any;
42
- processing = false;
43
- excelExportService = new ExcelExportService();
44
- textExportService = new TextExportService();
45
-
46
- constructor() { }
47
-
48
- ngOnInit(): void {
49
- this.columnDefinitions = [
50
- {
51
- id: 'sel', name: '#', field: 'num', width: 40,
52
- excludeFromExport: true,
53
- maxWidth: 70,
54
- resizable: true,
55
- filterable: true,
56
- selectable: false,
57
- focusable: false
58
- },
59
- {
60
- id: 'title', name: 'Title', field: 'title',
61
- width: 50,
62
- minWidth: 50,
63
- cssClass: 'cell-title',
64
- filterable: true,
65
- sortable: true
66
- },
67
- {
68
- id: 'duration', name: 'Duration', field: 'duration',
69
- minWidth: 50, width: 60,
70
- filterable: true,
71
- filter: { model: Filters.slider, operator: '>=' },
72
- sortable: true,
73
- type: FieldType.number,
74
- groupTotalsFormatter: GroupTotalFormatters.sumTotals,
75
- params: { groupFormatterPrefix: 'Total: ' }
76
- },
77
- {
78
- id: '%', name: '% Complete', field: 'percentComplete',
79
- minWidth: 70, width: 90,
80
- formatter: Formatters.percentCompleteBar,
81
- filterable: true,
82
- filter: { model: Filters.compoundSlider },
83
- sortable: true,
84
- type: FieldType.number,
85
- groupTotalsFormatter: GroupTotalFormatters.avgTotalsPercentage,
86
- params: { groupFormatterPrefix: '<i>Avg</i>: ' }
87
- },
88
- {
89
- id: 'start', name: 'Start', field: 'start',
90
- minWidth: 60,
91
- filterable: true,
92
- filter: { model: Filters.compoundDate },
93
- sortable: true,
94
- type: FieldType.dateIso,
95
- formatter: Formatters.dateIso,
96
- exportWithFormatter: true
97
- },
98
- {
99
- id: 'finish', name: 'Finish', field: 'finish',
100
- minWidth: 60,
101
- filterable: true,
102
- filter: { model: Filters.compoundDate },
103
- sortable: true,
104
- type: FieldType.dateIso,
105
- formatter: Formatters.dateIso,
106
- exportWithFormatter: true
107
- },
108
- {
109
- id: 'cost', name: 'Cost', field: 'cost',
110
- minWidth: 70,
111
- width: 100,
112
- filterable: true,
113
- filter: { model: Filters.compoundInputNumber },
114
- type: FieldType.number,
115
- sortable: true,
116
- exportWithFormatter: true,
117
- formatter: Formatters.dollar,
118
- groupTotalsFormatter: GroupTotalFormatters.sumTotalsDollar,
119
- params: { groupFormatterPrefix: '<b>Total</b>: ' /*, groupFormatterSuffix: ' USD'*/ }
120
- },
121
- {
122
- id: 'effort-driven', name: 'Effort Driven',
123
- minWidth: 20, width: 80, maxWidth: 80,
124
- cssClass: 'cell-effort-driven',
125
- field: 'effortDriven',
126
- formatter: Formatters.checkmark,
127
- sortable: true,
128
- filterable: true,
129
- filter: {
130
- collection: [{ value: '', label: '' }, { value: true, label: 'True' }, { value: false, label: 'False' }],
131
- model: Filters.singleSelect,
132
- }
133
- }
134
- ];
135
-
136
- this.gridOptions = {
137
- autoResize: {
138
- container: '#demo-container',
139
- rightPadding: 10
140
- },
141
- enableExcelExport: true,
142
- enableFiltering: true,
143
- // you could debounce/throttle the input text filter if you have lots of data
144
- // filterTypingDebounce: 250,
145
- enableGrouping: true,
146
- enableExport: true,
147
- gridMenu: {
148
- hideExportTextDelimitedCommand: false
149
- },
150
- excelExportOptions: { sanitizeDataExport: true },
151
- textExportOptions: { sanitizeDataExport: true },
152
- registerExternalResources: [this.excelExportService, this.textExportService],
153
- };
154
-
155
- this.loadData(500);
156
- }
157
-
158
- angularGridReady(angularGrid: AngularGridInstance) {
159
- this.angularGrid = angularGrid;
160
- this.gridObj = angularGrid.slickGrid;
161
- this.dataviewObj = angularGrid.dataView;
162
- }
163
-
164
- loadData(rowCount: number) {
165
- // mock a dataset
166
- this.dataset = [];
167
- for (let i = 0; i < rowCount; i++) {
168
- const randomYear = 2000 + Math.floor(Math.random() * 10);
169
- const randomMonth = Math.floor(Math.random() * 11);
170
- const randomDay = Math.floor((Math.random() * 29));
171
- const randomPercent = Math.round(Math.random() * 100);
172
-
173
- this.dataset[i] = {
174
- id: 'id_' + i,
175
- num: i,
176
- title: 'Task ' + i,
177
- duration: Math.round(Math.random() * 100) + '',
178
- percentComplete: randomPercent,
179
- percentCompleteNumber: randomPercent,
180
- start: new Date(randomYear, randomMonth, randomDay),
181
- finish: new Date(randomYear, (randomMonth + 1), randomDay),
182
- cost: (i % 33 === 0) ? null : Math.round(Math.random() * 10000) / 100,
183
- effortDriven: (i % 5 === 0)
184
- };
185
- }
186
- }
187
-
188
- clearGrouping() {
189
- this.dataviewObj.setGrouping([]);
190
- }
191
-
192
- collapseAllGroups() {
193
- this.dataviewObj.collapseAllGroups();
194
- }
195
-
196
- expandAllGroups() {
197
- this.dataviewObj.expandAllGroups();
198
- }
199
-
200
- exportToExcel() {
201
- this.excelExportService.exportToExcel({
202
- filename: 'Export',
203
- format: FileType.xlsx
204
- });
205
- }
206
-
207
- exportToFile(type = 'csv') {
208
- this.textExportService.exportToFile({
209
- delimiter: (type === 'csv') ? DelimiterType.comma : DelimiterType.tab,
210
- filename: 'myExport',
211
- format: (type === 'csv') ? FileType.csv : FileType.txt
212
- });
213
- }
214
-
215
- groupByDuration() {
216
- this.dataviewObj.setGrouping({
217
- getter: 'duration',
218
- formatter: (g) => `Duration: ${g.value} <span style="color:green">(${g.count} items)</span>`,
219
- aggregators: [
220
- new Aggregators.Avg('percentComplete'),
221
- new Aggregators.Sum('cost')
222
- ],
223
- comparer: (a, b) => SortComparers.numeric(a.value, b.value, SortDirectionNumber.asc),
224
- aggregateCollapsed: false,
225
- lazyTotalsCalculation: true
226
- } as Grouping);
227
-
228
- // you need to manually add the sort icon(s) in UI
229
- this.angularGrid.filterService.setSortColumnIcons([{ columnId: 'duration', sortAsc: true }]);
230
- this.gridObj.invalidate(); // invalidate all rows and re-render
231
- }
232
-
233
- groupByDurationOrderByCount(aggregateCollapsed: boolean) {
234
- this.angularGrid.filterService.setSortColumnIcons([]);
235
- this.dataviewObj.setGrouping({
236
- getter: 'duration',
237
- formatter: (g) => `Duration: ${g.value} <span style="color:green">(${g.count} items)</span>`,
238
- comparer: (a, b) => {
239
- return a.count - b.count;
240
- },
241
- aggregators: [
242
- new Aggregators.Avg('percentComplete'),
243
- new Aggregators.Sum('cost')
244
- ],
245
- aggregateCollapsed,
246
- lazyTotalsCalculation: true
247
- } as Grouping);
248
- this.gridObj.invalidate(); // invalidate all rows and re-render
249
- }
250
-
251
- groupByDurationEffortDriven() {
252
- this.angularGrid.filterService.setSortColumnIcons([]);
253
- this.dataviewObj.setGrouping([
254
- {
255
- getter: 'duration',
256
- formatter: (g) => `Duration: ${g.value} <span style="color:green">(${g.count} items)</span>`,
257
- aggregators: [
258
- new Aggregators.Sum('duration'),
259
- new Aggregators.Sum('cost')
260
- ],
261
- aggregateCollapsed: true,
262
- lazyTotalsCalculation: true
263
- },
264
- {
265
- getter: 'effortDriven',
266
- formatter: (g) => `Effort-Driven: ${(g.value ? 'True' : 'False')} <span style="color:green">(${g.count} items)</span>`,
267
- aggregators: [
268
- new Aggregators.Avg('percentComplete'),
269
- new Aggregators.Sum('cost')
270
- ],
271
- collapsed: true,
272
- lazyTotalsCalculation: true
273
- }
274
- ] as Grouping[]);
275
- this.gridObj.invalidate(); // invalidate all rows and re-render
276
- }
277
-
278
- groupByDurationEffortDrivenPercent() {
279
- this.angularGrid.filterService.setSortColumnIcons([]);
280
- this.dataviewObj.setGrouping([
281
- {
282
- getter: 'duration',
283
- formatter: (g) => `Duration: ${g.value} <span style="color:green">(${g.count} items)</span>`,
284
- aggregators: [
285
- new Aggregators.Sum('duration'),
286
- new Aggregators.Sum('cost')
287
- ],
288
- aggregateCollapsed: true,
289
- lazyTotalsCalculation: true
290
- },
291
- {
292
- getter: 'effortDriven',
293
- formatter: (g) => `Effort-Driven: ${(g.value ? 'True' : 'False')} <span style="color:green">(${g.count} items)</span>`,
294
- aggregators: [
295
- new Aggregators.Sum('duration'),
296
- new Aggregators.Sum('cost')
297
- ],
298
- lazyTotalsCalculation: true
299
- },
300
- {
301
- getter: 'percentComplete',
302
- formatter: (g) => `% Complete: ${g.value} <span style="color:green">(${g.count} items)</span>`,
303
- aggregators: [
304
- new Aggregators.Avg('percentComplete')
305
- ],
306
- aggregateCollapsed: true,
307
- collapsed: true,
308
- lazyTotalsCalculation: true
309
- }
310
- ] as Grouping[]);
311
- this.gridObj.invalidate(); // invalidate all rows and re-render
312
- }
313
- }
@@ -1,31 +0,0 @@
1
- <div id="demo-container" class="container-fluid">
2
- <h2>
3
- {{title}}
4
- <span class="float-end">
5
- <a style="font-size: 18px"
6
- target="_blank"
7
- href="https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/examples/grid-headerbutton.component.ts">
8
- <span class="fa fa-link"></span> code
9
- </a>
10
- </span>
11
- </h2>
12
- <div class="subtitle" [innerHTML]="subTitle"></div>
13
-
14
- <h5>Grid 1</h5>
15
- <angular-slickgrid gridId="grid7-1"
16
- [columnDefinitions]="columnDefinitions1"
17
- [gridOptions]="gridOptions1"
18
- [dataset]="dataset1"
19
- (onAngularGridCreated)="angularGrid1Ready($event.detail)">
20
- </angular-slickgrid>
21
-
22
- <br />
23
- <h5>Grid 2 - <span class="subtitle">with both Header Buttons & Menus</span></h5>
24
- <angular-slickgrid gridId="grid7-2"
25
- [columnDefinitions]="columnDefinitions2"
26
- [gridOptions]="gridOptions2"
27
- [dataset]="dataset2"
28
- (onAngularGridCreated)="angularGrid2Ready($event.detail)">
29
- </angular-slickgrid>
30
-
31
- </div>
@@ -1,10 +0,0 @@
1
- /* 1st grid */
2
- #grid7-1 {
3
- --slick-header-button-float: right;
4
- }
5
-
6
- /* 2nd grid */
7
- #grid7-2 {
8
- --slick-header-button-margin: 4px 0 50px 0;
9
- --slick-header-button-float: left;
10
- }
@@ -1,233 +0,0 @@
1
- import { Component, OnInit, ViewEncapsulation } from '@angular/core';
2
-
3
- import { AngularGridInstance, Column, GridOption, } from './../modules/angular-slickgrid';
4
-
5
- // create a custom Formatter to highlight negative values in red
6
- let columns1WithHighlightingById: any = {};
7
- let columns2WithHighlightingById: any = {};
8
-
9
- @Component({
10
- styleUrls: ['./grid-headerbutton.component.scss'],
11
- encapsulation: ViewEncapsulation.None,
12
- templateUrl: './grid-headerbutton.component.html'
13
- })
14
- export class GridHeaderButtonComponent implements OnInit {
15
- title = 'Example 7: Header Button Plugin';
16
- subTitle = `
17
- This example demonstrates using the <b>Slick.Plugins.HeaderButtons</b> plugin to easily add buttons to colum headers.
18
- These buttons can be specified directly in the column definition, and are very easy to configure and use.
19
- (<a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/Header-Menu-&-Header-Buttons" target="_blank">Wiki docs</a>)
20
- <ul>
21
- <li>Resize the 1st column to see all icon/command</li>
22
- <li>Mouse hover the 2nd column to see it's icon/command</li>
23
- <li>For all the other columns, click on top-right red circle icon to enable highlight of negative numbers.</li>
24
- <li>Use override callback functions to change the properties of show/hide, enable/disable the menu or certain item(s) from the list</li>
25
- <ol>
26
- <li>These callbacks are: "itemVisibilityOverride", "itemUsabilityOverride"</li>
27
- <li>for example the "Column E" does not show the header button via "itemVisibilityOverride"</li>
28
- <li>for example the "Column J" header button is displayed but it not usable via "itemUsabilityOverride"</li>
29
- </ol>
30
- </ul>
31
- `;
32
-
33
- columnDefinitions1: Column[] = [];
34
- columnDefinitions2: Column[] = [];
35
- gridOptions1!: GridOption;
36
- gridOptions2!: GridOption;
37
- dataset1: any[] = [];
38
- dataset2: any[] = [];
39
- angularGrid1!: AngularGridInstance;
40
- angularGrid2!: AngularGridInstance;
41
-
42
- constructor() {
43
- columns1WithHighlightingById = {};
44
- columns2WithHighlightingById = {};
45
- }
46
-
47
- ngOnInit(): void {
48
- this.defineGrid();
49
-
50
- // populate the dataset once the grid is ready
51
- this.dataset1 = this.loadData(200, 1);
52
- this.dataset2 = this.loadData(200, 2);
53
- }
54
-
55
- angularGrid1Ready(angularGrid: AngularGridInstance) {
56
- this.angularGrid1 = angularGrid;
57
- }
58
-
59
- angularGrid2Ready(angularGrid: AngularGridInstance) {
60
- this.angularGrid2 = angularGrid;
61
- }
62
-
63
- defineGrid() {
64
- this.gridOptions1 = {
65
- enableAutoResize: true,
66
- enableHeaderButton: true,
67
- enableHeaderMenu: false,
68
- autoResize: {
69
- container: '#demo-container',
70
- rightPadding: 10
71
- },
72
- enableFiltering: false,
73
- enableExcelCopyBuffer: true,
74
- excelCopyBufferOptions: {
75
- onCopyCells: (e, args) => console.log('onCopyCells', e, args),
76
- onPasteCells: (e, args) => console.log('onPasteCells', e, args),
77
- onCopyCancelled: (e, args) => console.log('onCopyCancelled', e, args),
78
- },
79
- enableCellNavigation: true,
80
- gridHeight: 275,
81
- headerButton: {
82
- // you can use the "onCommand" (in Grid Options) and/or the "action" callback (in Column Definition)
83
- onCommand: (_e, args) => this.handleOnCommand(_e, args, 1)
84
- }
85
- };
86
-
87
- // grid 2 options, same as grid 1 + extras
88
- this.gridOptions2 = {
89
- ...this.gridOptions1,
90
- enableHeaderMenu: true,
91
- enableFiltering: true,
92
- // frozenColumn: 2,
93
- // frozenRow: 2,
94
- headerButton: {
95
- // when floating to left, you might want to inverse the icon orders
96
- onCommand: (_e, args) => this.handleOnCommand(_e, args, 2)
97
- }
98
- };
99
- }
100
-
101
- handleOnCommand(_e: Event, args: any, gridNo: 1 | 2) {
102
- const column = args.column;
103
- const button = args.button;
104
- const command = args.command;
105
-
106
- if (command === 'toggle-highlight') {
107
- if (button.cssClass === 'fa fa-circle red') {
108
- if (gridNo === 1) {
109
- delete columns1WithHighlightingById[column.id];
110
- } else {
111
- delete columns2WithHighlightingById[column.id];
112
- }
113
- button.cssClass = 'fa fa-circle-o red faded';
114
- button.tooltip = 'Highlight negative numbers.';
115
- } else {
116
- if (gridNo === 1) {
117
- columns1WithHighlightingById[column.id] = true;
118
- } else {
119
- columns2WithHighlightingById[column.id] = true;
120
- }
121
- button.cssClass = 'fa fa-circle red';
122
- button.tooltip = 'Remove highlight.';
123
- }
124
- ((this as any)[`angularGrid${gridNo}`] as AngularGridInstance).slickGrid.invalidate();
125
- }
126
- }
127
-
128
- loadData(count: number, gridNo: 1 | 2) {
129
- // Set up some test columns.
130
- for (let i = 0; i < 10; i++) {
131
- (this as any)[`columnDefinitions${gridNo}`].push({
132
- id: i,
133
- name: 'Column ' + String.fromCharCode('A'.charCodeAt(0) + i),
134
- field: i + '',
135
- width: i === 0 ? 70 : 100, // have the 2 first columns wider
136
- filterable: true,
137
- sortable: true,
138
- formatter: (_row: number, _cell: number, value: any, columnDef: Column) => {
139
- if (gridNo === 1 && columns1WithHighlightingById[columnDef.id] && value < 0) {
140
- return `<div style="color:red; font-weight:bold;">${value}</div>`;
141
- } else if (gridNo === 2 && columns2WithHighlightingById[columnDef.id] && value < 0) {
142
- return `<div style="color:red; font-weight:bold;">${value}</div>`;
143
- }
144
- return value;
145
- },
146
- header: {
147
- buttons: [
148
- {
149
- cssClass: 'fa fa-circle-o red faded',
150
- command: 'toggle-highlight',
151
- tooltip: 'Highlight negative numbers.',
152
- itemVisibilityOverride: (args: any) => {
153
- // for example don't show the header button on column "E"
154
- return args.column.name !== 'Column E';
155
- },
156
- itemUsabilityOverride: (args: any) => {
157
- // for example the button usable everywhere except on last column ='J"
158
- return args.column.name !== 'Column J';
159
- },
160
- action: (_e: Event, args: any) => {
161
- // you can use the "action" callback and/or subscribe to the "onCallback" event, they both have the same arguments
162
- // do something
163
- console.log(`execute a callback action to "${args.command}" on ${args.column.name}`);
164
- }
165
- }
166
- ]
167
- }
168
- });
169
- }
170
-
171
- // Set multiple buttons on the first column to demonstrate overflow.
172
- (this as any)[`columnDefinitions${gridNo}`][0].name = 'Resize me!';
173
- (this as any)[`columnDefinitions${gridNo}`][0].header = {
174
- buttons: [
175
- {
176
- cssClass: 'fa fa-tag',
177
- handler: () => {
178
- alert('Tag');
179
- }
180
- },
181
- {
182
- cssClass: 'fa fa-comment',
183
- handler: () => {
184
- alert('Comment');
185
- }
186
- },
187
- {
188
- cssClass: 'fa fa-info-circle',
189
- handler: () => {
190
- alert('Info');
191
- }
192
- },
193
- {
194
- cssClass: 'fa fa-question-circle',
195
- handler: () => {
196
- alert('Help');
197
- }
198
- }
199
- ]
200
- };
201
-
202
- // when floating to left, you might want to inverse the icon orders
203
- if (gridNo === 2) {
204
- this.columnDefinitions2[0].header?.buttons?.reverse();
205
- }
206
-
207
- // Set a button on the second column to demonstrate hover.
208
- (this as any)[`columnDefinitions${gridNo}`][1].name = 'Hover me!';
209
- (this as any)[`columnDefinitions${gridNo}`][1].header = {
210
- buttons: [
211
- {
212
- cssClass: 'fa fa-question-circle',
213
- showOnHover: true,
214
- tooltip: 'This button only appears on hover.',
215
- handler: () => {
216
- alert('Help');
217
- }
218
- }
219
- ]
220
- };
221
-
222
- // mock a dataset
223
- const mockDataset = [];
224
- for (let i = 0; i < count; i++) {
225
- const d: any = (mockDataset[i] = {});
226
- d['id'] = i;
227
- for (let j = 0; j < (this as any)[`columnDefinitions${gridNo}`].length; j++) {
228
- d[j] = Math.round(Math.random() * 10) - 5;
229
- }
230
- }
231
- return mockDataset;
232
- }
233
- }