File

libs/common/ui/src/journey-insights/page-hierarchy/page-hierarchy.component.ts

Metadata

Index

Properties
Inputs
Accessors

Constructor

constructor()

Inputs

pageDetails
Type : PageDetail[]

Properties

_dataSource
Type : NxTreeFlatDataSource<PageTreeNode | PageFlatTreeNode>
_hasChild
Default value : () => {...}
_treeControl
Type : NxFlatTreeControl<PageFlatTreeNode>
pageTreeNodes
Type : PageTreeNode[]
Default value : []

Accessors

pageDetails
setpageDetails(pageDetails: PageDetail[])
Parameters :
Name Type Optional
pageDetails PageDetail[] No
Returns : void
import { Component, Input } from '@angular/core';
import {
  NxFlatTreeControl,
  NxFlatTreeNode,
  NxTreeFlatDataSource,
  NxTreeNode
} from '@aposin/ng-aquila/tree';

interface PageTreeNode extends NxTreeNode {
  children?: PageTreeNode[];
  label: string;
}

/** Flat node with expandable and level information */
interface PageFlatTreeNode extends NxFlatTreeNode {
  label: string;
}

interface PageDetail {
  pageId: string;
  bbTitles: string[];
}

@Component({
  selector: 'taly-page-hierarchy',
  templateUrl: './page-hierarchy.component.html',
  styleUrl: './page-hierarchy.component.scss',
  standalone: false
})
export class JourneyPageHierarchyComponent {
  @Input() set pageDetails(pageDetails: PageDetail[]) {
    this.pageTreeNodes = this.createTreeNodes(pageDetails);
    this._dataSource = new NxTreeFlatDataSource(this._treeControl, this.pageTreeNodes);
  }

  pageTreeNodes: PageTreeNode[] = [];
  _dataSource!: NxTreeFlatDataSource<PageTreeNode, PageFlatTreeNode>;
  _treeControl: NxFlatTreeControl<PageFlatTreeNode>;

  constructor() {
    this._treeControl = new NxFlatTreeControl();
  }

  _hasChild = (_: number, node: NxFlatTreeNode) => node.expandable;

  private createTreeNodes(pageDetails: PageDetail[]) {
    return pageDetails.map((page) => {
      return {
        label: page.pageId,
        children: page.bbTitles.map((bbTitle) => {
          return {
            label: bbTitle
          };
        })
      };
    });
  }
}
<div class="page-tree">
  <nx-tree [dataSource]="_dataSource" [treeControl]="_treeControl">
    <nx-tree-node *nxTreeNodeDef="let node">
      <button
        nxAction
        nxTreeNodeActionItem
        nxTreeNodePadding
        title="{{ node.label }}"
        type="button"
      >
        {{ node.label }}
      </button>
    </nx-tree-node>
    <nx-tree-node *nxTreeNodeDef="let node; when: _hasChild">
      <button
        nxAction
        nxTreeNodeActionItem
        nxTreeNodeToggle
        nxTreeNodePadding
        expandable
        [expanded]="_treeControl.isExpanded(node)"
        title="{{ node.label }}"
        type="button"
      >
        {{ node.label }}
      </button>
    </nx-tree-node>
  </nx-tree>
</div>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""