import 'zone.js'; import 'reflect-metadata'; import { Component, enableProdMode, NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { ViserModule } from 'viser-ng'; const data = [ { action: '访问', visitor: 500, site: '站点1' }, { action: '浏览', visitor: 400, site: '站点1' }, { action: '交互', visitor: 300, site: '站点1' }, { action: '下单', visitor: 200, site: '站点1' }, { action: '完成', visitor: 100, site: '站点1' }, { action: '访问', visitor: 550, site: '站点2' }, { action: '浏览', visitor: 420, site: '站点2' }, { action: '交互', visitor: 280, site: '站点2' }, { action: '下单', visitor: 150, site: '站点2' }, { action: '完成', visitor: 80, site: '站点2' } ]; data.sort((obj1: any, obj2: any) => { return obj1.visitor - obj2.visitor; }); const scale = [{ dataKey: 'percent', formatter: (val: any) => { return val * 100 + '%'; } }]; const tooltipOpts = { crosshairs: false, showTitle: false, itemTpl: '
  • ' + '' + '{name}
    ' + '{value}' + '
  • ' }; const facetOpts = { type: 'mirror', fields: [ 'site' ], transpose: true, padding: 0, eachView(view: any, facet: any) { view.interval() .position('action*visitor') .color('action', [ '#BAE7FF', '#69C0FF', '#40A9FF', '#1890FF', '#0050B3' ]) .shape('funnel') .tooltip('site*action*visitor', (site, action, visitor) => { return { name: site, value: action + ': ' + visitor }; }) .style({ lineWidth: 1, stroke: '#fff' }); data.map((obj: any) => { if (obj.site === facet.colValue) { view.guide().text({ top: true, position: [obj.action, 'min'], content: obj.visitor, style: { fill: '#fff', fontSize: '12', textAlign: facet.colIndex ? 'start' : 'end', shadowBlur: 2, shadowColor: 'rgba(0, 0, 0, .45)' }, offsetX: facet.colIndex ? 10 : -10 }); } }); } }; @Component({ selector: '#mount', template: `
    ` }) class AppComponent { forceFit: boolean = true; height: number = 400; data = data; scale = scale; tooltipOpts = tooltipOpts; facetOpts = facetOpts; } @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ViserModule ], providers: [], bootstrap: [ AppComponent ] }) export default class AppModule { }