--- Title: Category tree datasource service Added: v6.0.0.0 Status: Active Last reviewed: 2023-01-25 --- # [Category tree datasource service](../../../lib/content-services/src/lib/category/services/category-tree-datasource.service.ts "Defined in category-tree-datasource.service.ts") Datasource service for category tree. ## Class members ### Methods - **appendNodes**(nodeToAppend: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts), subNodes: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]`)
Append more child nodes to already expanded parent node - _nodeToAppend:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts) - Expanded parent node - _subNodes:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]` - List of nodes that will be added as children of expanded node - **collapseNode**(nodeToCollapse: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts))
Collapses a node removing all children from it. - _nodeToCollapse:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts) - Node to be collapsed - **connect**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]>`
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]>` - - **disconnect**()
- **expandNode**(nodeToExpand: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts), subNodes: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]`)
Expands node applying subnodes to it. - _nodeToExpand:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts) - Node to be expanded - _subNodes:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]` - List of nodes that will be added as children of expanded node - **getChildren**(parentNode: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)): [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]`
Gets children of the node - _parentNode:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts) - Parent node - **Returns** [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`[]` - children of parent node - **getParentNode**(parentNodeId: `string`): [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`|undefined`
Gets parent node of given node. If node with parentNodeId is not found it returns undefined. - _parentNodeId:_ `string` - Id of a parent node to be found - **Returns** [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`|undefined` - parent node or undefined when not found - **getSubNodes**(parentNodeId: `string`, skipCount?: `number`, maxItems?: `number`, name?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TreeResponse`](../../../lib/content-services/src/lib/tree/models/tree-response.interface.ts)`<`[`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`>>`
Gets categories as nodes for category tree. - _parentNodeId:_ `string` - Identifier of a parent category - _skipCount:_ `number` - (Optional) Number of top categories to skip - _maxItems:_ `number` - (Optional) Maximum number of subcategories returned from - _name:_ `string` - (Optional) Optional parameter which specifies if categories should be filtered out by name or not. If not specified then returns categories without filtering. - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TreeResponse`](../../../lib/content-services/src/lib/tree/models/tree-response.interface.ts)`<`[`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts)`>>` - - **isEmpty**(): `boolean`
Checks if tree is empty - **Returns** `boolean` - boolean - **removeNode**(node: [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts))
Removes provided node from the tree - _node:_ [`CategoryNode`](../../../lib/content-services/src/lib/category/models/category-node.interface.ts) - Node to be removed ## Details [Category tree datasource service](../../content-services/services/category-tree-datasource.service.md) acts as datasource for [tree component](../../content-services/components/tree.component.md) utilizing [category service](../../content-services/services/category.service.md). See the [Tree component](../../../lib/content-services/src/lib/tree/components/tree.component.ts) and [Tree service](../../../lib/content-services/src/lib/tree/services/tree.service.ts) to get more details on how datasource is used.