import 'zone.js';
import 'reflect-metadata';
import { Component, enableProdMode, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ViserModule } from 'viser-ng';
import * as $ from 'jquery';
const DataSet = require('@antv/data-set');
const nodesLabel = [
'name', {
offset: 0,
textStyle: (text, item) => {
if (item.point.hasChildren) {
return {
opacity: 0
};
}
return {
textBaseline: 'middle',
fill: 'grey',
fontSize: 9,
textAlign: 'center'
};
}
},
];
@Component({
selector: '#mount',
template: `
`
})
export class AppComponent {
height: number = 400;
width: number = 400;
padding = [ 60, 0, 40, 0 ];
data = {};
size = ['r', r => r * 400];
style = { stroke: 'rgb(183, 55, 121)' };
color = ['r', 'rgb(252, 253, 191)-rgb(231, 82, 99)-rgb(183, 55, 121)'];
label = nodesLabel;
constructor() {
$.getJSON('/assets/data/flare.json', (sourceData) => {
const dv = new DataSet.View().source(sourceData, {
type: 'hierarchy',
});
dv.transform({
type: 'hierarchy.circle-packing',
});
this.data = dv.getAllNodes().map(node => ({
hasChildren: !!(node.data.children && node.data.children.length),
name: node.data.name.split(/(?=[A-Z][^A-Z])/g).join('\n'),
value: node.value,
depth: node.depth,
x: node.x,
y: node.y,
r: node.r
}));
});
}
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
ViserModule
],
providers: [],
bootstrap: [AppComponent]
})
export default class AppModule { }