Skip to content

Commit 7c91784

Browse files
feat(summaries): add new disable summaries sample for the grid
1 parent 79aead2 commit 7c91784

3 files changed

Lines changed: 131 additions & 24 deletions

File tree

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

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
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-grid
321
[igxPreventDocumentScroll]="true"
422
#grid1
@@ -7,8 +25,7 @@
725
height="600px"
826
width="100%"
927
>
10-
<igx-column field="ProductID" header="Product ID">
11-
</igx-column>
28+
<igx-column field="ProductID" header="Product ID"> </igx-column>
1229
<igx-column
1330
field="ProductName"
1431
header="Product Name"
@@ -39,15 +56,12 @@
3956
[hasSummary]="true"
4057
>
4158
</igx-column>
42-
<igx-column field="OrderDate" [dataType]="'date'" [hasSummary]="true">
59+
<igx-column
60+
field="OrderDate"
61+
header="Order Date"
62+
[dataType]="'date'"
63+
[hasSummary]="true"
64+
>
4365
</igx-column>
4466
</igx-grid>
45-
<div class="action__buttons">
46-
<button igxButton="contained" (click)="disableDefaultSummaries()">
47-
Disable Min and Max summaries for the Price column
48-
</button>
49-
<button igxButton="contained" (click)="disableCustomSummaries()">
50-
Disable Products and Discontinued Products summaries
51-
</button>
52-
</div>
5367
</div>

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
padding: 16px;
44
}
55

6-
.action__buttons {
7-
padding-top: 16px;
6+
.summary-chooser {
7+
margin-bottom: 16px;
88
}
99

10-
.action__buttons > button {
11-
margin-right: 16px;
10+
igx-buttongroup{
11+
display: block;
1212
}

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

Lines changed: 102 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import {
22
Component,
33
ViewChild,
4-
OnInit
4+
OnInit,
5+
AfterViewInit
56
} from "@angular/core";
67
import {
78
IgxGridComponent,
89
IgxNumberSummaryOperand,
910
IgxSummaryResult,
1011
IgxColumnComponent,
11-
IgxButtonDirective
12+
IgxButtonGroupComponent
1213
} from "igniteui-angular";
1314
import { DATA } from "../../data/nwindData";
1415
import { IgxPreventDocumentScrollDirective } from "../../directives/prevent-scroll.directive";
@@ -60,16 +61,18 @@ class DiscontinuedSummary {
6061
styleUrls: ["./grid-disable-summaries.component.scss"],
6162
templateUrl: "grid-disable-summaries.component.html",
6263
imports: [
63-
IgxPreventDocumentScrollDirective,
6464
IgxGridComponent,
65+
IgxPreventDocumentScrollDirective,
6566
IgxColumnComponent,
66-
IgxButtonDirective
67+
IgxButtonGroupComponent
6768
]
6869
})
69-
export class GridDisableSummariesComponent implements OnInit{
70+
export class GridDisableSummariesComponent implements OnInit, AfterViewInit {
7071
@ViewChild("grid1", { static: true }) public grid1: IgxGridComponent;
7172

7273
public data: any[];
74+
public defaultSummaries: any[];
75+
public customSummaries: any[];
7376

7477
public discontinuedSummary = DiscontinuedSummary;
7578

@@ -79,11 +82,101 @@ export class GridDisableSummariesComponent implements OnInit{
7982
this.data = DATA;
8083
}
8184

82-
public disableDefaultSummaries() {
83-
this.grid1.getColumnByName('UnitPrice').disabledSummaries = ['min', 'max'];
85+
public ngAfterViewInit(): void {
86+
this.defaultSummaries = [
87+
{
88+
label: 'Count',
89+
selected: this.grid1.getColumnByName('UnitPrice').disabledSummaries.includes('count'),
90+
togglable: true,
91+
value: 'count'
92+
},
93+
{
94+
label: 'Min',
95+
selected: this.grid1.getColumnByName('UnitPrice').disabledSummaries.includes('min'),
96+
togglable: true,
97+
value: 'min'
98+
},
99+
{
100+
label: 'Max',
101+
selected: this.grid1.getColumnByName('UnitPrice').disabledSummaries.includes('max'),
102+
togglable: true,
103+
value: 'max'
104+
},
105+
{
106+
label: 'Sum',
107+
selected: this.grid1.getColumnByName('UnitPrice').disabledSummaries.includes('sum'),
108+
togglable: true,
109+
value: 'sum'
110+
},
111+
{
112+
label: 'Average',
113+
selected: this.grid1.getColumnByName('UnitPrice').disabledSummaries.includes('average'),
114+
togglable: true,
115+
value: 'average'
116+
}
117+
];
118+
119+
this.customSummaries = [
120+
{
121+
label: 'Products',
122+
selected: this.grid1.getColumnByName('UnitsInStock').disabledSummaries.includes('products'),
123+
togglable: true,
124+
value: 'products'
125+
},
126+
{
127+
label: 'Total Items',
128+
selected: this.grid1.getColumnByName('UnitsInStock').disabledSummaries.includes('total'),
129+
togglable: true,
130+
value: 'total'
131+
},
132+
{
133+
label: 'Discontinued Products',
134+
selected: this.grid1.getColumnByName('UnitsInStock').disabledSummaries.includes('discontinued'),
135+
togglable: true,
136+
value: 'discontinued'
137+
},
138+
{
139+
label: 'Total Discontinued Items',
140+
selected: this.grid1.getColumnByName('UnitsInStock').disabledSummaries.includes('totalDiscontinued'),
141+
togglable: true,
142+
value: 'totalDiscontinued'
143+
}
144+
];
84145
}
85146

86-
public disableCustomSummaries() {
87-
this.grid1.getColumnByName('UnitsInStock').disabledSummaries = ['products', 'discontinued'];
147+
public disableDefaultSummary(event) {
148+
const selectedValue = this.defaultSummaries[event.index].value;
149+
const column = this.grid1.getColumnByName('UnitPrice');
150+
151+
if (!column.disabledSummaries.includes(selectedValue)) {
152+
column.disabledSummaries = [...column.disabledSummaries, selectedValue];
153+
}
154+
}
155+
156+
public enableDefaultSummary(event) {
157+
const selectedValue = this.defaultSummaries[event.index].value;
158+
const column = this.grid1.getColumnByName('UnitPrice');
159+
160+
column.disabledSummaries = column.disabledSummaries.filter(
161+
(summary) => summary !== selectedValue
162+
);
163+
}
164+
165+
public disableCustomSummary(event) {
166+
const selectedValue = this.customSummaries[event.index].value;
167+
const column = this.grid1.getColumnByName('UnitsInStock');
168+
169+
if (!column.disabledSummaries.includes(selectedValue)) {
170+
column.disabledSummaries = [...column.disabledSummaries, selectedValue];
171+
}
172+
}
173+
174+
public enableCustomSummary(event) {
175+
const selectedValue = this.customSummaries[event.index].value;
176+
const column = this.grid1.getColumnByName('UnitsInStock');
177+
178+
column.disabledSummaries = column.disabledSummaries.filter(
179+
(summary) => summary !== selectedValue
180+
);
88181
}
89182
}

0 commit comments

Comments
 (0)