Skip to content

Commit 53d76b0

Browse files
feat(summaries): add new disable summaries sample for the hierarchical grid
1 parent 9956cd4 commit 53d76b0

3 files changed

Lines changed: 138 additions & 26 deletions

File tree

src/app/hierarchical-grid/hierarchical-grid-disable-summaries/hierarchical-grid-disable-summaries.component.html

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,25 @@
11
<div class="grid__wrapper">
2+
<div class="summary-chooser">
3+
<igx-buttongroup
4+
[selectionMode]="'multi'"
5+
[values]="defaultSummaries"
6+
(selected)="disableDefaultSummary($event)"
7+
(deselected)="enableDefaultSummary($event)"
8+
></igx-buttongroup>
9+
</div>
10+
11+
<div class="summary-chooser">
12+
<igx-buttongroup
13+
[selectionMode]="'multi'"
14+
[values]="customSummaries"
15+
(selected)="disableCustomSummary($event)"
16+
(deselected)="enableCustomSummary($event)"
17+
></igx-buttongroup>
18+
</div>
19+
220
<igx-hierarchical-grid
321
[igxPreventDocumentScroll]="true"
4-
#hierarchicalGrid
22+
#hierarchicalGrid1
523
[data]="data"
624
[autoGenerate]="false"
725
[height]="'600px'"
@@ -92,12 +110,4 @@
92110
<igx-column field="Headliner" [hasSummary]="true"></igx-column>
93111
</igx-row-island>
94112
</igx-hierarchical-grid>
95-
<div class="action__buttons">
96-
<button igxButton="contained" (click)="disableDefaultSummaries()">
97-
Disable Min and Max summaries for the Grammy Nominations column
98-
</button>
99-
<button igxButton="contained" (click)="disableCustomSummaries()">
100-
Disable Nominated Singers and Total Nominations summaries
101-
</button>
102-
</div>
103113
</div>

src/app/hierarchical-grid/hierarchical-grid-disable-summaries/hierarchical-grid-disable-summaries.component.scss

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
margin: 1px
1313
}
1414

15-
.action__buttons {
16-
padding-top: 16px;
15+
.summary-chooser {
16+
margin-bottom: 16px;
1717
}
1818

19-
.action__buttons > button {
20-
margin-right: 16px;
19+
igx-buttongroup{
20+
display: block;
2121
}

src/app/hierarchical-grid/hierarchical-grid-disable-summaries/hierarchical-grid-disable-summaries.component.ts

Lines changed: 115 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1-
import { Component, ViewChild, OnInit } from "@angular/core";
21
import {
3-
IgxButtonDirective,
2+
Component,
3+
ViewChild,
4+
OnInit,
5+
AfterViewInit
6+
} from "@angular/core";
7+
import {
48
IgxCellTemplateDirective,
59
IgxColumnComponent,
610
IgxHierarchicalGridComponent,
711
IgxNumberSummaryOperand,
812
IgxRowIslandComponent,
9-
IgxSummaryResult
13+
IgxSummaryResult,
14+
IgxButtonGroupComponent
1015
} from "igniteui-angular";
1116
import { SINGERS } from "../../data/singersData";
1217
import { IgxPreventDocumentScrollDirective } from "../../directives/prevent-scroll.directive";
@@ -18,38 +23,43 @@ class GrammySummary {
1823
fieldName = ""
1924
): IgxSummaryResult[] {
2025
const result = [];
26+
2127
result.push({
2228
key: "nominatedSingers",
2329
label: "Nominated Singers",
2430
summaryResult: allData.filter((rec) => rec["GrammyNominations"] > 0)
2531
.length
2632
});
33+
2734
result.push({
2835
key: "singersWithAwards",
2936
label: "Singers with Awards",
3037
summaryResult: allData.filter((rec) => rec["GrammyAwards"] > 0)
3138
.length
3239
});
40+
3341
result.push({
3442
key: "nominations",
3543
label: "Total Nominations",
3644
summaryResult: IgxNumberSummaryOperand.sum(
3745
allData.map((r) => r["GrammyNominations"])
3846
)
3947
});
48+
4049
result.push({
4150
key: "awards",
4251
label: "Total Awards",
4352
summaryResult: IgxNumberSummaryOperand.sum(
4453
allData.map((r) => r["GrammyAwards"])
4554
)
4655
});
56+
4757
return result;
4858
}
4959
}
5060

5161
@Component({
52-
selector: "app-hierarchical-grid-summary",
62+
selector: "app-hierarchical-grid-summary-sample",
5363
styleUrls: ["./hierarchical-grid-disable-summaries.component.scss"],
5464
templateUrl: "hierarchical-grid-disable-summaries.component.html",
5565
imports: [
@@ -58,14 +68,16 @@ class GrammySummary {
5868
IgxColumnComponent,
5969
IgxCellTemplateDirective,
6070
IgxRowIslandComponent,
61-
IgxButtonDirective
71+
IgxButtonGroupComponent
6272
]
6373
})
64-
export class HierarchicalGridDisableSummariesComponent implements OnInit {
65-
@ViewChild("hierarchicalGrid", { static: true })
66-
private hierarchicalGrid: IgxHierarchicalGridComponent;
74+
export class HierarchicalGridDisableSummariesComponent implements OnInit, AfterViewInit {
75+
@ViewChild("hierarchicalGrid1", { static: true })
76+
private hierarchicalGrid1: IgxHierarchicalGridComponent;
6777

68-
public data;
78+
public data: any[];
79+
public defaultSummaries: any[];
80+
public customSummaries: any[];
6981

7082
public grammySummary = GrammySummary;
7183

@@ -75,12 +87,102 @@ export class HierarchicalGridDisableSummariesComponent implements OnInit {
7587
this.data = SINGERS;
7688
}
7789

78-
public disableDefaultSummaries() {
79-
this.hierarchicalGrid.getColumnByName("GrammyNominations").disabledSummaries = ["min", "max"];
90+
public ngAfterViewInit(): void {
91+
this.defaultSummaries = [
92+
{
93+
label: 'Count',
94+
selected: this.hierarchicalGrid1.getColumnByName('GrammyNominations').disabledSummaries.includes('count'),
95+
togglable: true,
96+
value: 'count'
97+
},
98+
{
99+
label: 'Min',
100+
selected: this.hierarchicalGrid1.getColumnByName('GrammyNominations').disabledSummaries.includes('min'),
101+
togglable: true,
102+
value: 'min'
103+
},
104+
{
105+
label: 'Max',
106+
selected: this.hierarchicalGrid1.getColumnByName('GrammyNominations').disabledSummaries.includes('max'),
107+
togglable: true,
108+
value: 'max'
109+
},
110+
{
111+
label: 'Sum',
112+
selected: this.hierarchicalGrid1.getColumnByName('GrammyNominations').disabledSummaries.includes('sum'),
113+
togglable: true,
114+
value: 'sum'
115+
},
116+
{
117+
label: 'Average',
118+
selected: this.hierarchicalGrid1.getColumnByName('GrammyNominations').disabledSummaries.includes('average'),
119+
togglable: true,
120+
value: 'average'
121+
}
122+
];
123+
124+
this.customSummaries = [
125+
{
126+
label: 'Nominated Singers',
127+
selected: this.hierarchicalGrid1.getColumnByName('Photo').disabledSummaries.includes('nominatedSingers'),
128+
togglable: true,
129+
value: 'nominatedSingers'
130+
},
131+
{
132+
label: 'Singers with Awards',
133+
selected: this.hierarchicalGrid1.getColumnByName('Photo').disabledSummaries.includes('singersWithAwards'),
134+
togglable: true,
135+
value: 'singersWithAwards'
136+
},
137+
{
138+
label: 'Total Nominations',
139+
selected: this.hierarchicalGrid1.getColumnByName('Photo').disabledSummaries.includes('nominations'),
140+
togglable: true,
141+
value: 'nominations'
142+
},
143+
{
144+
label: 'Total Awards',
145+
selected: this.hierarchicalGrid1.getColumnByName('Photo').disabledSummaries.includes('awards'),
146+
togglable: true,
147+
value: 'awards'
148+
}
149+
];
80150
}
81151

82-
public disableCustomSummaries() {
83-
this.hierarchicalGrid.getColumnByName("Photo").disabledSummaries = ["nominatedSingers", "nominations"];
152+
public disableDefaultSummary(event) {
153+
const selectedValue = this.defaultSummaries[event.index].value;
154+
const column = this.hierarchicalGrid1.getColumnByName('GrammyNominations');
155+
156+
if (!column.disabledSummaries.includes(selectedValue)) {
157+
column.disabledSummaries = [...column.disabledSummaries, selectedValue];
158+
}
159+
}
160+
161+
public enableDefaultSummary(event) {
162+
const selectedValue = this.defaultSummaries[event.index].value;
163+
const column = this.hierarchicalGrid1.getColumnByName('GrammyNominations');
164+
165+
column.disabledSummaries = column.disabledSummaries.filter(
166+
(summary) => summary !== selectedValue
167+
);
168+
}
169+
170+
public disableCustomSummary(event) {
171+
const selectedValue = this.customSummaries[event.index].value;
172+
const column = this.hierarchicalGrid1.getColumnByName('Photo');
173+
174+
if (!column.disabledSummaries.includes(selectedValue)) {
175+
column.disabledSummaries = [...column.disabledSummaries, selectedValue];
176+
}
177+
}
178+
179+
public enableCustomSummary(event) {
180+
const selectedValue = this.customSummaries[event.index].value;
181+
const column = this.hierarchicalGrid1.getColumnByName('Photo');
182+
183+
column.disabledSummaries = column.disabledSummaries.filter(
184+
(summary) => summary !== selectedValue
185+
);
84186
}
85187

86188
public formatter = (a) => a;

0 commit comments

Comments
 (0)