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 scale = [{ dataKey: 'age', sync: true, tickCount: 11, }, { dataKey: 'total_percentage', sync: true, formatter(v) { return v + '%'; } }, { dataKey: 'gender', sync: true, }]; @Component({ selector: '#mount', template: `
` }) export class AppComponent { forceFit: boolean = true; height: number = 400; data = []; scale = scale; fields = ['gender']; color = ['gender', ['#1890ff', '#f04864']]; constructor() { $.getJSON('/assets/data/population.json', (sourceData) => { const tmp = []; const dates = []; sourceData.male.values.forEach((obj: any) => { if (dates.indexOf(obj.date) === -1) { dates.push(obj.date); } obj.age_groups.forEach((subObject: any) => { subObject.gender = 'male'; subObject.date = obj.date; tmp.push(subObject); }); }); sourceData.female.values.forEach((obj: any) => { obj.age_groups.forEach((subObject: any) => { subObject.gender = 'female'; subObject.date = obj.date; tmp.push(subObject); }); }); const dv = new DataSet.View().source(tmp); dv.transform({ type: 'filter', callback(row) { return new Date(row.date * 1000).getFullYear() === new Date(dates[0] * 1000).getFullYear(); } }); this.data = dv.rows; }); } } @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ViserModule ], providers: [], bootstrap: [AppComponent] }) export default class AppModule { }