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 { DataView } = DataSet; const scale1 = [{ dataKey: 'time', type: 'timeCat', nice: false, range: [ 0, 1 ] }, { dataKey: 'trend', values: [ '上涨', '下跌' ], }, { dataKey: 'volumn', alias: '成交量' }, { dataKey: 'start', alias: '开盘价' }, { dataKey: 'end', alias: '收盘价' }, { dataKey: 'max', alias: '最高价' }, { dataKey: 'min', alias: '最低价' }, { dataKey: 'range', alias: '股票价格' }]; const scale2 = [{ dataKey: 'volumn', tickCount: 2 }]; const tooltipOpts = { showTitle: false, itemTpl: '
  • ' + '' + '{name}{value}
  • ', }; const candleOpts = { color: ['trend', val => { if (val === '上涨') { return '#f04864'; } if (val === '下跌') { return '#2fc25b'; } }], tooltip: ['time*start*end*max*min', (time, start, end, max, min) => { return { name: time, value: '
    开盘价:' + start + '
    ' + '收盘价:' + end + '
    ' + '最高价:' + max + '
    ' + '最低价:' + min + '' }; }], }; const axis1Opts = { label: { formatter: val => { return parseInt(String(val / 1000), 10) + 'k'; } } }; const barOpts = { color: ['trend', val => { if (val === '上涨') { return '#f04864'; } if (val === '下跌') { return '#2fc25b'; } }], tooltip: ['time*volumn', (time, volumn) => { return { name: time, value: '
    成交量:' + volumn + '
    ' }; }] }; @Component({ selector: '#mount', template: `
    ` }) class AppComponent { forceFit: boolean = true; height: number = 600; data = []; dv = []; scale1 = scale1; scale2 = scale2; start = '2015-07-07'; end = '2015-07-28'; tooltipOpts = tooltipOpts; candleOpts = candleOpts; axis1Opts = axis1Opts; barOpts = barOpts; scales = { time: { type: 'timeCat', nice: false, } }; constructor() { $.getJSON('/assets/data/candle-sticks.json', (sourceData) => { this.data = sourceData; this.dv = this.getData(); }); } getData = () => { const { start, end, data } = this; const ds = new DataSet({ state: { start, end, } }); const dv = ds.createView(); dv.source(data) .transform({ type: 'filter', callback: obj => { const date = obj.time; return date <= end && date >= start; } }) .transform({ type: 'map', callback: obj => { obj.trend = (obj.start <= obj.end) ? '上涨' : '下跌'; obj.range = [ obj.start, obj.end, obj.max, obj.min ]; return obj; } }); return dv; } slideChange = (opts: any) => { this.start = opts.startText; this.end = opts.endText; this.dv = this.getData(); } } @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ViserModule ], providers: [], bootstrap: [ AppComponent ] }) export default class AppModule { }