import { ChangeDetectionStrategy , Component } from '@angular/core' ; import { SankeyLink , SankeyNode } from '@ux-aspects/ux-aspects' ; import { BaseDocumentationSection } from '../../../../../components/base-documentation-section/base-documentation-section' ; import { DocumentationSectionComponent } from '../../../../../decorators/documentation-section-component' ; import { IPlayground } from '../../../../../interfaces/IPlayground' ; import { IPlaygroundProvider } from '../../../../../interfaces/IPlaygroundProvider' ; @ Component ( { selector : 'uxd-charts-sankey-chart' , templateUrl : './sankey-chart.component.html' , styleUrls : [ './sankey-chart.component.less' ] , changeDetection : ChangeDetectionStrategy . OnPush } ) @ DocumentationSectionComponent ( 'ChartsSankeyChartComponent' ) export class ChartsSankeyChartComponent extends BaseDocumentationSection implements IPlaygroundProvider { nodes : ReadonlyArray < SankeyNode < SankeyNodeData > > = [ { id : SankeyNodeId . FileSystem , data : { name : 'File System Windows' , files : 2100000 , space : 23100000000 } } , { id : SankeyNodeId . Exchange , data : { name : 'Exchange' , files : 3700000 , space : 40700000000 } } , { id : SankeyNodeId . Office365 , data : { name : 'Office 365 Exchange' , files : 1600000 , space : 17600000000 } } , { id : SankeyNodeId . SharePoint , data : { name : 'Sharepoint' , files : 5300000 , space : 58300000000 } } , { id : SankeyNodeId . Text , data : { name : 'Text' , files : 2300000 , space : 18700000000 } } , { id : SankeyNodeId . Audio , data : { name : 'Audio' , files : 1300000 , space : 17600000000 } } , { id : SankeyNodeId . Video , data : { name : 'Video' , files : 2500000 , space : 23100000000 } } , { id : SankeyNodeId . Entity , data : { name : 'Entity' , files : 2950000 , space : 22000000000 } } , { id : SankeyNodeId . Metadata , data : { name : 'Metadata' , files : 1450000 , space : 12100000000 } } , { id : SankeyNodeId . Other , data : { name : 'Other' , files : 2200000 , space : 20900000000 } } , { id : SankeyNodeId . EmployeeData , data : { name : 'Employee data' , files : 3030000 , space : 23100000000 } } , { id : SankeyNodeId . HealthData , data : { name : 'Health data' , files : 1400000 , space : 17600000000 } } , { id : SankeyNodeId . FinancialData , data : { name : 'Financial' , files : 2540000 , space : 17600000000 } } , { id : SankeyNodeId . LegalData , data : { name : 'Legal' , files : 640000 , space : 30000000 } } , { id : SankeyNodeId . PersonalData , data : { name : 'Personal' , files : 2480000 , space : 20900000000 } } , { id : SankeyNodeId . OtherData , data : { name : 'Other' , files : 2800000 , space : 19800000000 } } ] ; links : ReadonlyArray < SankeyLink > = [ { source : SankeyNodeId . FileSystem , target : SankeyNodeId . Video , value : 950000 } , { source : SankeyNodeId . FileSystem , target : SankeyNodeId . Metadata , value : 200000 } , { source : SankeyNodeId . FileSystem , target : SankeyNodeId . Other , value : 950000 } , { source : SankeyNodeId . Exchange , target : SankeyNodeId . Text , value : 2440000 } , { source : SankeyNodeId . Exchange , target : SankeyNodeId . Entity , value : 1700000 } , { source : SankeyNodeId . Office365 , target : SankeyNodeId . Text , value : 500000 } , { source : SankeyNodeId . Office365 , target : SankeyNodeId . Audio , value : 1000000 } , { source : SankeyNodeId . Office365 , target : SankeyNodeId . Other , value : 300000 } , { source : SankeyNodeId . SharePoint , target : SankeyNodeId . Audio , value : 300000 } , { source : SankeyNodeId . SharePoint , target : SankeyNodeId . Video , value : 1250000 } , { source : SankeyNodeId . SharePoint , target : SankeyNodeId . Entity , value : 1250000 } , { source : SankeyNodeId . SharePoint , target : SankeyNodeId . Metadata , value : 1250000 } , { source : SankeyNodeId . SharePoint , target : SankeyNodeId . Other , value : 1250000 } , { source : SankeyNodeId . Text , target : SankeyNodeId . EmployeeData , value : 1150000 } , { source : SankeyNodeId . Text , target : SankeyNodeId . FinancialData , value : 920000 } , { source : SankeyNodeId . Text , target : SankeyNodeId . LegalData , value : 640000 } , { source : SankeyNodeId . Text , target : SankeyNodeId . PersonalData , value : 230000 } , { source : SankeyNodeId . Audio , target : SankeyNodeId . HealthData , value : 520000 } , { source : SankeyNodeId . Audio , target : SankeyNodeId . OtherData , value : 780000 } , { source : SankeyNodeId . Video , target : SankeyNodeId . PersonalData , value : 2250000 } , { source : SankeyNodeId . Video , target : SankeyNodeId . OtherData , value : 250000 } , { source : SankeyNodeId . Entity , target : SankeyNodeId . OtherData , value : 1770000 } , { source : SankeyNodeId . Entity , target : SankeyNodeId . FinancialData , value : 1180000 } , { source : SankeyNodeId . Metadata , target : SankeyNodeId . EmployeeData , value : 1000000 } , { source : SankeyNodeId . Other , target : SankeyNodeId . HealthData , value : 880000 } , { source : SankeyNodeId . Other , target : SankeyNodeId . EmployeeData , value : 880000 } , { source : SankeyNodeId . Other , target : SankeyNodeId . FinancialData , value : 440000 } , ] ; columns : string [ ] = [ 'Repositories' , 'Extraction' , 'Classification' ] ; playground = ( ) => { return { files : { 'app.component.html' : this . snippets . raw . appHtml , 'app.component.css' : this . snippets . raw . appCss , 'app.component.ts' : this . snippets . raw . appTs , } , modules : [ { imports : [ 'SankeyChartModule' , 'FileSizePipeModule' ] , library : '@ux-aspects/ux-aspects' } ] } ; } ; constructor ( ) { super ( require . context ( './snippets/' , false , /(html|css|js|ts)$/ ) ) ; } getFileCount ( count ) { return ( count / 1000000 ) . toPrecision ( 2 ) + 'M' ; } getAriaLabel ( node , size ) { return node . data . name + ' has ' + ( node . data . files / 1000000 ) . toPrecision ( 2 ) + ' million files, occupying ' + size + ' of disk space' ; } } export interface SankeyNodeData { name : string ; files : number ; space : number ; } export enum SankeyNodeId { FileSystem , Exchange , Office365 , SharePoint , Text , Audio , Video , Entity , Metadata , Other , EmployeeData , HealthData , FinancialData , LegalData , PersonalData , OtherData }