/ TreeMap / How To / Drilldown
Search results

Drilldown in Angular TreeMap component

21 Dec 2022 / 3 minutes to read

Customize the header for treemap drilldown

Yon can add a header element as

and customize it to show the population of a particular country or continent on treemap drill-down. To customize the header for treemap drill-down, follow the given steps:

Step 1:

Initialize the treemap and enable the drill-down option.

Copied to clipboard
import { Component, ViewEncapsulation } from '@angular/core';
import { TreeMap, IDrillEndEventArgs, ILoadEventArgs } from '@syncfusion/ej2-angular-treemap';
import { DrillDown } from './datasource';

@Component({
  selector: 'app-container',
  template: '<ejs-treemap id="container" #treemap style="display:block;" [dataSource]="dataSource" [weightValuePath]="weightValuePath"[leafItemSettings]="leafItemSettings" [palette]="palette" format="n" useGroupingSeparator="true" enableDrillDown="true"><e-levels><e-level groupPath="Continent" fill="#336699" [border]="border"> </e-level><e-level groupPath="States" fill="#336699" [border]="border"> </e-level><e-level groupPath="Region" showHeader="false" fill="#336699" [border]="border"></e-level></e-levels></ejs-treemap>',
  encapsulation: ViewEncapsulation.None
})
export class AppComponent implements OnInit {
  public palette: string[] = ['#9999ff', '#CCFF99', '#FFFF99', '#FF9999', '#FF99FF', '#FFCC66'];
  public dataSource: object[] = DrillDown;
  public weightValuePath: string = 'Population';
  public leafItemSettings: object = {
    labelPath: 'Name',
    showLabels: false,
    labelStyle: { size: '0px' },
    border: { color: 'black', width: 0.5 }
  };
  border: object = {
    color: 'black',
    width: 0.5
  };
};

Step 2:

Show the population of a particular continent in the treemap loaded event. In this event, you can get the header element.

Copied to clipboard
    public loaded = (args: ILoadEventArgs) => {
    let header: Element = document.getElementById('header');
    let population: number = 0;
    for (let i: number = 0; i < args.treemap.layout.renderItems[0]['parent'].Continent.length; i++) {
      population += +(args.treemap.layout.renderItems[0]['parent'].Continent[i]['data'].Population);
    }
    header.innerHTML = 'Continent - Population : ' + population
  }

Step 3:

Customize the population for drilled countries or states in the header element when drill-down the treemap. The drillEnd event will be triggered when treemap is drilled.

Copied to clipboard
import { Component, ViewEncapsulation } from '@angular/core';
import { TreeMap, IDrillEndEventArgs, ILoadEventArgs } from '@syncfusion/ej2-angular-treemap';
import { DrillDown } from './datasource';

@Component({
  selector: 'app-container',
  template: '<ejs-treemap id="container" #treemap style="display:block;" [dataSource]="dataSource" [weightValuePath]="weightValuePath"[leafItemSettings]="leafItemSettings" [palette]="palette" format="n" useGroupingSeparator="true" enableDrillDown="true"(loaded)="loaded($event)" (drillEnd)="drillEnd($event)"><e-levels><e-level groupPath="Continent" fill="#336699" [border]="border"> </e-level><e-level groupPath="States" fill="#336699" [border]="border"> </e-level><e-level groupPath="Region" showHeader="false" fill="#336699" [border]="border"></e-level></e-levels></ejs-treemap>',
  encapsulation: ViewEncapsulation.None
})
export class AppComponent implements OnInit {
  public loaded = (args: ILoadEventArgs) => {
    let header: Element = document.getElementById('header');
    let population: number = 0;
    for (let i: number = 0; i < args.treemap.layout.renderItems[0]['parent'].Continent.length; i++) {
      population += +(args.treemap.layout.renderItems[0]['parent'].Continent[i]['data'].Population);
    }
    header.innerHTML = 'Continent - Population : ' + population
  }
  public drillEnd = (args: IDrillEndEventArgs) => {
    let header: Element = document.getElementById('header');
    let layout: Element = document.getElementById("container_TreeMap_Squarified_Layout");
    let population: number = 0;
    if (args.treemap.layout.renderItems[0]['isDrilled']) {
      for (let i: number = 0; i < args.treemap.layout.renderItems.length; i++) {
        population += +(args.treemap.layout.renderItems[i]['data'].Population);
      }
      header.innerHTML = layout.children[0].children[1].innerHTML.split(']')[1] + ' - ' + population;
    }
    else if (args.treemap.layout.renderItems[0]['parent'].Continent) {
      for (let i: number = 0; i < args.treemap.layout.renderItems[0]['parent'].Continent.length; i++) {
        population += +(args.treemap.layout.renderItems[0]['parent'].Continent[i]['data'].Population);
      }
      header.innerHTML = 'Continent - Population : ' + population;
    } else {
      population = args.treemap.layout.renderItems[0]['data'].Population;
      header.innerHTML = layout.children[0].children[1].innerHTML.split(']')[1] + ' - Population : ' + population;
    }
  }
  public palette: string[] = ['#9999ff', '#CCFF99', '#FFFF99', '#FF9999', '#FF99FF', '#FFCC66'];
  public dataSource: object[] = DrillDown;
  public weightValuePath: string = 'Population';
  public leafItemSettings: object = {
    labelPath: 'Name',
    showLabels: false,
    labelStyle: { size: '0px' },
    border: { color: 'black', width: 0.5 }
  };
  border: object = {
    color: 'black',
    width: 0.5
  };
};
Copied to clipboard
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { TreeMapModule, TreeMapAllModule } from '@syncfusion/ej2-angular-treemap';

/**
 * Module
 */
@NgModule({
    imports: [
        BrowserModule, TreeMapModule, TreeMapAllModule
    ],
    declarations: [AppComponent],
    bootstrap: [AppComponent],
	providers: []
})
export class AppModule { }
Copied to clipboard
/**
 * drill down sample
 */
//tslint:disable
export let DrillDown: Object[] = [
    { Continent:[
       { Name: "Africa",Population: 1216130000, States: [
            { Name: "Eastern Africa",Population:410637987, Region:[				
                { Name:"Ethiopia", Population: 107534882},
				{ Name:"Tanzania", Population: 59091392},
				{ Name:"Kenya", Population: 50950879},
				{ Name:"Uganda", Population: 44270563},
				{ Name:"Mozambique", Population: 30528673},
				{ Name:"Madagascar", Population: 26262810},
				{ Name:"Malawi", Population: 19164728},
				{ Name:"Zambia", Population: 17609178},
				{ Name:"Zimbabwe", Population: 16913261},
				{ Name:"Somalia", Population: 15181925},
				{ Name:"South, Sudan", Population: 12919053},
				{ Name:"Rwanda", Population: 12501156},
				{ Name:"Burundi", Population: 11216450},
				{ Name:"Eritrea", Population: 5187948},
				{ Name:"Mauritius", Population: 1268315},
				{ Name:"Djibouti", Population: 971408},
				{ Name:"Réunion", Population: 883247},
				{ Name:"Comoros", Population: 832347},
				{ Name:"Mayotte", Population: 259682},
				{ Name:"Seychelles", Population: 95235},
            ]  },
            { Name: "Middle Africa",Population:158562976, Region:[
				{ Name:"Democratic, Republic of the Congo", Population: 84004989},
				{ Name:"Angola", Population: 30774205},
				{ Name:"Cameroon", Population: 24678234},
				{ Name:"Chad", Population: 15353184},
				{ Name:"Congo", Population: 5399895},
				{ Name:"Central African, Republic", Population: 4737423},
				{ Name:"Gabon", Population: 2067561},
				{ Name:"Equatorial Guinea", Population: 1313894},
				{ Name:"Sao Tome and Principe", Population: 208818},
			] },
            { Name: "Northern Africa",Population:229385603, Region: [
				{ Name:"Egypt", Population: 99375741},
				{ Name:"Algeria", Population: 42008054},
				{ Name:"Sudan", Population: 41511526},
				{ Name:"Morocco", Population: 36191805},
				{ Name:"Tunisia", Population: 11659174},
				{ Name:"Libya", Population: 6470956},
				{ Name:"Western, Sahara", Population: 567421},
			] },
            { Name: "Southern Africa",Population:64292365, Region:[
				{ Name:"South Africa", Population: 57398421},
				{ Name:"Namibia", Population: 2587801},
				{ Name:"Botswana", Population: 2333201},
				{ Name:"Lesotho", Population: 2263010},
				{ Name:"Swaziland", Population: 1391385},
			] },
            { Name: "Western Africa", Population:362201579, Region:[
				{ Name:"Nigeria", Population: 195875237},
				{ Name:"Ghana", Population: 29463643},
				{ Name:"Côte d'Ivoire", Population: 24905843},
				{ Name:"Niger", Population: 22311375},
				{ Name:"Burkina Faso", Population: 19751651},
				{ Name:"Mali", Population: 19107706},
				{ Name:"Senegal", Population: 16294270},
				{ Name:"Guinea", Population: 13052608},
				{ Name:"Benin", Population: 11485674},
				{ Name:"Togo", Population: 7990926},
				{ Name:"Sierra Leone", Population: 7719729},
				{ Name:"Liberia", Population: 4853516},
				{ Name:"Mauritania", Population: 4540068},
				{ Name:"Gambia", Population: 2163765},
				{ Name:"Guinea-Bissau", Population: 1907268},
				{ Name:"Cabo Verde", Population: 553335},
				{ Name:"Saint Helena", Population: 4074},
			] },
        ]
       }]
    },
	
	
	
	{ Continent:[
        {
		Name: "Asia", Population:4436224000, States:[
			{Name: "Central Asia", Population: 69787760, Region:[
				{ Name:"Uzbekistan", Population: 32364996 },
				{ Name:"Kazakhstan", Population: 18403860 },
				{ Name:"Tajikistan", Population: 9107211 },
				{ Name:"Kyrgyzstan", Population: 6132932 },
				{ Name:"Turkmenistan", Population: 5851466 },
			] },
			{Name: "Eastern Asia", Population:1641908531, Region:[
				{ Name:"China", Population: 1415045928}, 
				{ Name:"Japan", Population:	 127185332 },
				{ Name:"South Korea", Population:	51164435 },
				{ Name:"North Korea", Population:25610672 },
				{ Name:"Taiwan", Population: 23694089 },
				{ Name:"Hong Kong", Population: 7428887 },
				{ Name:"Mongolia", Population: 3121772}, 
				{ Name:"Macao", Population: 632418 },
			]  },
			{Name: "Southeastern Asia", Population:641775797, Region: [
				{ Name:"Indonesia", Population:	 266794980 },
				{ Name:"Philippines", Population:	 106512074 },
				{ Name:"Viet Nam", Population:	 96491146 },
				{ Name:"Thailand", Population:	 69183173 },
				{ Name:"Myanmar", Population:	 53855735 },
				{ Name:"Malaysia", Population:	 32042458 },
				{ Name:"Cambodia", Population:	 16245729 },
				{ Name:"Laos", Population:	 6961210 },
				{ Name:"Singapore", Population:	 5791901}, 
				{ Name:"Timor-Leste", Population:	 1324094}, 
				{ Name:"Brunei Darussalam", Population:	 434076}, 
			]  },
			{Name: "Southern Asia", Population: 1846266634, Region: [
				{ Name:"India", Population:	 1354051854},
				{ Name:"Pakistan", Population:	 200813818},
				{ Name:"Bangladesh", Population:	 166368149},
				{ Name:"Iran", Population:	 82011735},
				{ Name:"Afghanistan", Population:	 36373176},
				{ Name:"Nepal", Population:	 29624035},
				{ Name:"Sri Lanka", Population:	 20950041},
				{ Name:"Bhutan", Population:	 817054},
				{ Name:"Maldives", Population:	 444259},
			]},
			{Name: "Western Asia", Population:262938009, Region: [
				{ Name:"Turkey", Population: 81916871},
				{ Name:"Iraq", Population: 39339753},
				{ Name:"Saudi Arabia", Population: 33554343},
				{ Name:"Yemen", Population: 28915284},
				{ Name:"Syria", Population: 18284407},
				{ Name:"Azerbaijan", Population: 9923914},
				{ Name:"Jordan", Population: 9903802},
				{ Name:"United Arab Emirates", Population: 9541615},
				{ Name:"Israel", Population: 8452841},
				{ Name:"Lebanon", Population: 6093509},
				{ Name:"State of Palestine", Population: 5052776},
				{ Name:"Oman", Population: 4829946},
				{ Name:"Kuwait", Population: 4197128},
				{ Name:"Georgia", Population: 3907131},
				{ Name:"Armenia", Population: 2934152},
				{ Name:"Qatar", Population: 2694849},
				{ Name:"Bahrain", Population: 1566993},
				{ Name:"Cyprus", Population: 1189085},
			] },
       ]
        }]
    },
 
 
	{ Continent:[
        {
		Name: "North America", Population:579024000, States:[
			
		{Name:"Central America", Population:174988756 , Region:[
			{ Name:"Mexico", Population: 130759074 },
			{ Name:"Guatemala", Population: 17245346 },
			{ Name:"Honduras", Population: 9417167 },
			{ Name:"El, Salvador", Population: 6411558}, 
			{ Name:"Nicaragua", Population: 6284757 },
			{ Name:"Costa, Rica", Population: 4953199}, 
			{ Name:"Panama", Population: 4162618 },
			{ Name:"Belize", Population: 382444 },
	   ]},
		{ Name:"Northern America", Population:358593810, Region:[
			{ Name:"U.S.", Population:3267667480 }, 
			{ Name:"Canada", Population:36953765},
			{ Name:"Bermuda", Population:61070	},
			{ Name:"Greenland", Population:56565},
			{ Name:"Saint Pierre & Miquelon", Population:6342	},
		]},
      ]
        }]
    },
 
 
	{
        Continent:[
            {
		Name:"South America", Population: 422535000, States:[
			{Name:"Brazil", Population:204519000},
			{Name:"Colombia", Population:48549000 },
			{Name:"Argentina", Population:43132000 },
			{Name:"Peru", Population:31153000 },
			{Name:"Venezuela", Population:30620000},
			{Name:"Chile", Population:18006000 },
			{Name:"Ecuador", Population:16279000},
			{Name:"Bolivia", Population:10520000},
			{Name:"Paraguay", Population:7003000},
			{Name:"Uruguay", Population:3310000},
			{Name:"Guyana", Population:747000},
			{Name:"Suriname", Population:560000 },
			{Name:"French Guiana", Population:262000},
			{Name:"Falkland Islands", Population:3000 },
        ]},
    ]},
        

	{ Continent:[
        {
        Name: "Europe", Population:738849000, States:[
		{Name:"Eastern Europe", Population:291953328, Region:[
			{Name:"Russia", Population:143964709 },
			{Name:"Ukraine", Population: 44009214},
			{Name:"Poland", Population:38104832 },
			{Name:"Romania", Population:19580634 },
			{Name:"Crech, Republic", Population:10625250 },
			{Name:"Hungary", Population:9688847 },
			{Name:"Belarus", Population:9452113 },
			{Name:"Bulgaria", Population: 7036848},
			{Name:"Slovakia", Population: 5449816},
			{Name:"Moldova", Population:4041065 },
		] },
		{Name:"Northern Europe", Population:103642971, Region:[
			{ Name:"United Kingdom", Population: 66573504},
			{ Name:"Sweden", Population: 9982709},
			{ Name:"Denmark", Population: 5754356},
			{ Name:"Finland", Population: 5542517},
			{ Name:"Norway", Population: 5353363},
			{ Name:"Ireland", Population: 4803748},
			{ Name:"Lithuania", Population: 2876475},
			{ Name:"Latvia", Population: 1929938},
			{ Name:"Estonia", Population: 1306788},
			{ Name:"Iceland", Population: 337780},
			{ Name:"Channel Islands", Population: 166083},
			{ Name:"Isle of Man", Population: 84831},
			{ Name:"Faeroe Islands", Population: 49489},
		] },
		{Name:"Southern Europe", Population:152172107, Region:[
			{ Name:"Italy",Population:  59290969 },
			{ Name:"Spain",Population:  46397452}, 
			{ Name:"Greece",Population:  11142161 },
			{ Name:"Portugal",Population:  10291196}, 
			{ Name:"Serbia",Population:  8762027 },
			{ Name:"Croatia",Population:  4164783 },
			{ Name:"Bosnia and Herzegovina",Population:  3503554 },
			{ Name:"Albania",Population:  2934363 },
			{ Name:"Macedonia",Population:  2085051 },
			{ Name:"Slovenia",Population:  2081260 },
			{ Name:"Montenegro",Population:  629219}, 
			{ Name:"Malta",Population:  432089 },
			{ Name:"Andorra",Population:  76953 },
			{ Name:"Gibraltar",Population:  34733 },
			{ Name:"San Marino",Population:  33557 },
			{ Name:"Holy, See",Population:  801 },
		]},
		{Name:"Western Europe", Population:92746859, Region:[
			{ Name:"Germany", Population: 82293457 },
			{ Name:"France", Population: 65233271 },
			{ Name:"Netherlands", Population: 17084459 },
			{ Name:"Belgium", Population: 11498519 },
			{ Name:"Austria", Population: 8751820 },
			{ Name:"Switzerland", Population: 8544034 },
			{ Name:"Luxembourg", Population: 590321 },
			{ Name:"Monaco", Population: 38897 },
			{ Name:"Liechtenstein", Population: 38155 },
		]},
      ]
    }]
    }
 ]
Copied to clipboard
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';

enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);