Skip to content

Commit ab85701

Browse files
committed
Populating featuresList when using using GridOptions
Populating featuresList when using using GridOptions
1 parent 986963a commit ab85701

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

src/iggrid/features.directive.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Directive, AfterContentInit, ContentChild } from "@angular/core";
1+
import { Directive, AfterContentInit, ContentChild, ElementRef } from "@angular/core";
22
import { IgGridSortingFeature } from "./iggridfeatures/iggridsorting.directive";
33
import { IgGridFilteringFeature } from "./iggridfeatures/iggridfiltering.directive";
44
import { IgGridPagingFeature } from "./iggridfeatures/iggridpaging.directive";
@@ -22,6 +22,7 @@ import { IgGridMultiColumnHeadersFeature } from "./iggridfeatures/iggridmulticol
2222
})
2323
export class Features implements AfterContentInit {
2424
public allFeatures:Array<any> = new Array<any>()
25+
2526
@ContentChild(IgGridSortingFeature) sorting: IgGridSortingFeature;
2627
@ContentChild(IgGridFilteringFeature) filtering: IgGridFilteringFeature;
2728
@ContentChild(IgGridPagingFeature) paging: IgGridPagingFeature;
@@ -40,6 +41,35 @@ export class Features implements AfterContentInit {
4041
@ContentChild(IgGridAppendRowsOnDemandFeature) appendRowsOnDemand: IgGridAppendRowsOnDemandFeature;
4142
@ContentChild(IgGridMultiColumnHeadersFeature) multiColumnHeaders: IgGridMultiColumnHeadersFeature;
4243

44+
addFeature(name, parent){
45+
var nodeName = name.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase() });
46+
var el = document.createElement(nodeName);
47+
el = parent.appendChild(el);
48+
var child = new ElementRef(el);
49+
50+
switch(nodeName) {
51+
case "filtering": this.filtering = new IgGridFilteringFeature(child);break;
52+
case "sorting": this.sorting = new IgGridSortingFeature(child); break;
53+
case "paging": this.paging = new IgGridPagingFeature(child); break;
54+
case "updating": this.updating = new IgGridUpdatingFeature(child); break;
55+
case "group-by": this.groupBy = new IgGridGroupByFeature(child); break;
56+
case "moving": this.moving = new IgGridColumnMovingFeature(child); break;
57+
case "hiding": this.hiding = new IgGridHidingFeature(child); break;
58+
case "responsive": this.responsive = new IgGridResponsiveFeature(child); break;
59+
case "cell-merging": this.cellMerging = new IgGridCellMergingFeature(child); break;
60+
case "resizing": this.resizing = new IgGridResizingFeature(child); break;
61+
case "selection": this.selection = new IgGridSelectionFeature(child); break;
62+
case "row-selectors": this.rowSelectors = new IgGridRowSelectorsFeature(child); break;
63+
case "summaries": this.summaries = new IgGridSummariesFeature(child); break;
64+
case "column-fixing": this.columnFixing = new IgGridColumnFixingFeature(child); break;
65+
case "tooltips": this.tooltips = new IgGridTooltipsFeature(child); break;
66+
case "append-rows-on-demand": this.appendRowsOnDemand = new IgGridAppendRowsOnDemandFeature(child); break;
67+
case "multi-column-headers": this.multiColumnHeaders = new IgGridMultiColumnHeadersFeature(child); break;
68+
}
69+
this[name].ngOnInit();
70+
this.allFeatures.push(this[name]);
71+
72+
}
4373
ngAfterContentInit() {
4474
this.filtering ? this.allFeatures.push(this.filtering): null;
4575
this.sorting ? this.allFeatures.push(this.sorting): null;

src/iggrid/iggridbase.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {AfterContentInit, QueryList, ContentChild, ContentChildren, ElementRef,
33
import { Column } from './column.directive';
44
import { Features } from './features.directive';
55

6-
export class IgGridBase<Model> extends IgControlBase<Model> implements AfterContentInit {
6+
export class IgGridBase<Model> extends IgControlBase<Model> implements AfterContentInit {
77
protected _dataSource: any;
88
protected _changes: any;
99
@ContentChildren(Column) _columns: QueryList<Column>;
@@ -16,7 +16,6 @@ export class IgGridBase<Model> extends IgControlBase<Model> implements AfterCont
1616
jQuery.extend(true, [], this._opts.dataSource) :
1717
jQuery.extend(true, [], this._config.dataSource);
1818
}
19-
2019
ngAfterContentInit() {
2120
if (this._columns && this._columns.length) {
2221
if (this._config) {
@@ -32,6 +31,14 @@ export class IgGridBase<Model> extends IgControlBase<Model> implements AfterCont
3231
this._opts["features"] = this.featuresList.allFeatures.map((c) => { return c.initSettings;});
3332
}
3433
}
34+
if(this._config && this._config["features"] && !this.featuresList){
35+
this.featuresList = new Features();
36+
//populate featuresList
37+
for(var i=0; i < this._config["features"].length; i++){
38+
var featureName = this._config["features"][i].name.charAt(0).toLowerCase() + this._config["features"][i].name.slice(1);
39+
this.featuresList.addFeature(featureName, this._el);
40+
}
41+
}
3542
super.ngOnInit();
3643
}
3744

0 commit comments

Comments
 (0)