1- import { Component , ViewChild , OnInit } from "@angular/core" ;
21import {
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" ;
1116import { SINGERS } from "../../data/singersData" ;
1217import { 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