@@ -11,6 +11,7 @@ import {
1111 GridStateChange ,
1212 GridStateType ,
1313 TreeToggledItem ,
14+ TreeToggleStateChange ,
1415} from './../modules/angular-slickgrid' ;
1516
1617const NB_ITEMS = 500 ;
@@ -72,7 +73,7 @@ export class GridTreeDataParentChildComponent implements OnInit {
7273 id : 'percentComplete' , name : '% Complete' , field : 'percentComplete' ,
7374 minWidth : 120 , maxWidth : 200 , exportWithFormatter : false ,
7475 sortable : true , filterable : true , filter : { model : Filters . compoundSlider , operator : '>=' } ,
75- formatter : Formatters . percentCompleteBar , type : FieldType . number ,
76+ formatter : Formatters . percentCompleteBarWithText , type : FieldType . number ,
7677 } ,
7778 {
7879 id : 'start' , name : 'Start' , field : 'start' , minWidth : 60 ,
@@ -137,7 +138,7 @@ export class GridTreeDataParentChildComponent implements OnInit {
137138 multiColumnSort : false , // multi-column sorting is not supported with Tree Data, so you need to disable it
138139 presets : {
139140 filters : [ { columnId : 'percentComplete' , searchTerms : [ 25 ] , operator : '>=' } ] ,
140- treeData : { toggledItems : [ { itemId : 1 , isCollapsed : false } ] } ,
141+ // treeData: { toggledItems: [{ itemId: 1, isCollapsed: false }] },
141142 } ,
142143
143144 // change header/cell row height for material design theme
@@ -255,7 +256,6 @@ export class GridTreeDataParentChildComponent implements OnInit {
255256 let indent = 0 ;
256257 const parents = [ ] ;
257258 const data = [ ] ;
258-
259259 // prepare the data
260260 for ( let i = 0 ; i < rowCount ; i ++ ) {
261261 const randomYear = 2000 + Math . floor ( Math . random ( ) * 10 ) ;
@@ -286,7 +286,6 @@ export class GridTreeDataParentChildComponent implements OnInit {
286286 indent -- ;
287287 parents . pop ( ) ;
288288 }
289-
290289 if ( parents . length > 0 ) {
291290 parentId = parents [ parents . length - 1 ] ;
292291 } else {
@@ -306,20 +305,45 @@ export class GridTreeDataParentChildComponent implements OnInit {
306305 return data ;
307306 }
308307
309- /** Dispatched event of a Grid State Changed event */
308+ handleOnTreeFullToggleEnd ( treeToggleExecution : TreeToggleStateChange ) {
309+ console . log ( 'Tree Data changes' , treeToggleExecution ) ;
310+ this . hideSpinner ( ) ;
311+ }
312+
313+ /** Whenever a parent is being toggled, we'll keep a reference of all of these changes so that we can reapply them whenever we want */
314+ handleOnTreeItemToggled ( treeToggleExecution : TreeToggleStateChange ) {
315+ this . hasNoExpandCollapseChanged = false ;
316+ this . treeToggleItems = treeToggleExecution . toggledItems as TreeToggledItem [ ] ;
317+ console . log ( 'Tree Data changes' , treeToggleExecution ) ;
318+ }
319+
310320 handleOnGridStateChanged ( gridStateChange : GridStateChange ) {
311321 this . hasNoExpandCollapseChanged = false ;
312322
313- if ( gridStateChange . change ! . type === GridStateType . treeData ) {
314- console . log ( 'Tree Data gridStateChange' , gridStateChange . gridState ! . treeData ) ;
315- this . treeToggleItems = gridStateChange . gridState ! . treeData ! . toggledItems as TreeToggledItem [ ] ;
323+ if ( gridStateChange ? .change ? .type === GridStateType . treeData ) {
324+ console . log ( 'Tree Data gridStateChange' , gridStateChange ? .gridState ? .treeData ) ;
325+ this . treeToggleItems = gridStateChange ? .gridState ? .treeData ? .toggledItems as TreeToggledItem [ ] ;
316326 }
317327 }
318328
319329 logTreeDataToggledItems ( ) {
320330 console . log ( this . angularGrid . treeDataService . getToggledItems ( ) ) ;
321331 }
322332
333+ dynamicallyToggledFirstParent ( ) {
334+ const parentPropName = 'parentId' ;
335+ const treeLevelPropName = 'treeLevel' ; // if undefined in your options, the default prop name is "__treeLevel"
336+ const newTreeLevel = 1 ;
337+
338+ // find first parent object and toggle it
339+ const childItemFound = this . dataset . find ( ( item ) => item [ treeLevelPropName ] === newTreeLevel ) ;
340+ const parentItemFound = this . angularGrid . dataView . getItemByIdx ( childItemFound [ parentPropName ] ) ;
341+
342+ if ( childItemFound && parentItemFound ) {
343+ this . angularGrid . treeDataService . dynamicallyToggleItemState ( [ { itemId : parentItemFound . id , isCollapsed : ! parentItemFound . __collapsed } ] ) ;
344+ }
345+ }
346+
323347 reapplyToggledItems ( ) {
324348 this . angularGrid . treeDataService . applyToggledItemStateChanges ( this . treeToggleItems ) ;
325349 }
0 commit comments