From de9d2e95b43991fccee342ebed03b006f6fed844 Mon Sep 17 00:00:00 2001 From: zhangab Date: Tue, 23 Oct 2018 11:32:03 +0800 Subject: Build AngularJs component for usecase-ui Change-Id: I393f4837fc5f9cbd71448dbf20e1f1781f0656d3 Issue-ID: USECASEUI-154 Signed-off-by: zhangab --- .../app/components/charts/bar/bar.component.html | 18 ++++ .../app/components/charts/bar/bar.component.less | 0 .../components/charts/bar/bar.component.spec.ts | 25 +++++ .../src/app/components/charts/bar/bar.component.ts | 15 +++ .../app/components/charts/line/line.component.html | 22 +++++ .../app/components/charts/line/line.component.less | 0 .../components/charts/line/line.component.spec.ts | 25 +++++ .../app/components/charts/line/line.component.ts | 79 ++++++++++++++++ .../app/components/charts/pie/pie.component.html | 24 +++++ .../app/components/charts/pie/pie.component.less | 0 .../components/charts/pie/pie.component.spec.ts | 25 +++++ .../src/app/components/charts/pie/pie.component.ts | 104 +++++++++++++++++++++ 12 files changed, 337 insertions(+) create mode 100644 usecaseui-portal/src/app/components/charts/bar/bar.component.html create mode 100644 usecaseui-portal/src/app/components/charts/bar/bar.component.less create mode 100644 usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts create mode 100644 usecaseui-portal/src/app/components/charts/bar/bar.component.ts create mode 100644 usecaseui-portal/src/app/components/charts/line/line.component.html create mode 100644 usecaseui-portal/src/app/components/charts/line/line.component.less create mode 100644 usecaseui-portal/src/app/components/charts/line/line.component.spec.ts create mode 100644 usecaseui-portal/src/app/components/charts/line/line.component.ts create mode 100644 usecaseui-portal/src/app/components/charts/pie/pie.component.html create mode 100644 usecaseui-portal/src/app/components/charts/pie/pie.component.less create mode 100644 usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts create mode 100644 usecaseui-portal/src/app/components/charts/pie/pie.component.ts (limited to 'usecaseui-portal/src/app/components/charts') diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.html b/usecaseui-portal/src/app/components/charts/bar/bar.component.html new file mode 100644 index 00000000..a7cd0677 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.html @@ -0,0 +1,18 @@ + +

+ bar works! +

diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.less b/usecaseui-portal/src/app/components/charts/bar/bar.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts b/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts new file mode 100644 index 00000000..d979ffb6 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BarComponent } from './bar.component'; + +describe('BarComponent', () => { + let component: BarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/bar/bar.component.ts b/usecaseui-portal/src/app/components/charts/bar/bar.component.ts new file mode 100644 index 00000000..fa9ecbbd --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/bar/bar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bar', + templateUrl: './bar.component.html', + styleUrls: ['./bar.component.less'] +}) +export class BarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.html b/usecaseui-portal/src/app/components/charts/line/line.component.html new file mode 100644 index 00000000..9a43e28c --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.html @@ -0,0 +1,22 @@ + +
+ Line Chart +
diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.less b/usecaseui-portal/src/app/components/charts/line/line.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts b/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts new file mode 100644 index 00000000..afe70654 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LineComponent } from './line.component'; + +describe('LineComponent', () => { + let component: LineComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LineComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/line/line.component.ts b/usecaseui-portal/src/app/components/charts/line/line.component.ts new file mode 100644 index 00000000..8bc8ebd8 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/line/line.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { SimpleChanges } from '@angular/core/src/metadata/lifecycle_hooks'; + +@Component({ + selector: 'app-line', + templateUrl: './line.component.html', + styleUrls: ['./line.component.less'] +}) +export class LineComponent implements OnInit { + // 图形数据 + @Input() chartData; + // 初始化数据 + @Input() initData; + + constructor() { } + + ngOnInit() { + this.initOpts = { + renderer: 'canvas', + height: this.initData.height, + width: this.initData.width + }; + this.lineOption ={ + tooltip : this.initData.option.tooltip, + icon:'circle', + legend: this.initData.option.legend, + grid: { + left: '1%', + right: '3%', + top: '10%', + bottom: '10%', + containLabel: true + }, + xAxis: { + axisTick: { + show: false, + }, + axisLine:{ + show: false + }, + data: ['01','02','04','06','08','10','12','14','16','18','20','22','24'] + }, + yAxis: { + axisTick: { + show: false, + }, + axisLine:{ + show: false + } + }, + series : this.initData.option.series + } + } + + ngOnChanges(changes:SimpleChanges){ + + // 当有实例的时候再执行,相当于第一次不执行下面方法 + if(this.chartIntance){ + this.chartDataChange() + } + } + // 初始化图形高度 + initOpts:any; + // 折线图配置 + lineOption:any; + // 实例对象 + chartIntance:any; + // 数据变化 + updateOption:any; + chartDataChange(){ + this.updateOption = this.chartData; + } + chartInit(chart){ + this.chartIntance = chart; + } + + + +} diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.html b/usecaseui-portal/src/app/components/charts/pie/pie.component.html new file mode 100644 index 00000000..5f1e94ce --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.html @@ -0,0 +1,24 @@ + +
+ Pie Chart +
\ No newline at end of file diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.less b/usecaseui-portal/src/app/components/charts/pie/pie.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts b/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts new file mode 100644 index 00000000..528da25c --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PieComponent } from './pie.component'; + +describe('PieComponent', () => { + let component: PieComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PieComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PieComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/usecaseui-portal/src/app/components/charts/pie/pie.component.ts b/usecaseui-portal/src/app/components/charts/pie/pie.component.ts new file mode 100644 index 00000000..8a5e2100 --- /dev/null +++ b/usecaseui-portal/src/app/components/charts/pie/pie.component.ts @@ -0,0 +1,104 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { SimpleChanges } from '@angular/core/src/metadata/lifecycle_hooks'; + +@Component({ + selector: 'app-pie', + templateUrl: './pie.component.html', + styleUrls: ['./pie.component.less'] +}) +export class PieComponent implements OnInit { + // 图形数据 + @Input() chartData; + // 初始化数据 + @Input() initData; + + constructor() { } + + ngOnInit() { + this.initOpts = { + renderer: 'canvas', + height: this.initData.height + }; + this.pieOption = { + legend: this.initData.option.legend, + color:this.initData.option.color, + series : [ + { + name: this.initData.option.series[0].name, + type: 'pie', + radius : this.initData.option.series[0].radius, + center: ['50%', '45%'], + legendHoverLink: false, + hoverOffset: 5, + avoidLabelOverlap: false, + label: this.initData.option.series[0].label, + data:[ + {value:1, name:'11'} + ], + itemStyle: { + emphasis: { + shadowBlur: 5, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + } + } + + ngOnChanges(changes:SimpleChanges){ + + // 当有实例的时候再执行,相当于第一次不执行下面方法 + if(this.chartIntance){ + this.chartDataChange() + } + } + + // 初始化图形高度 + initOpts:any; + // alarm饼图 + pieOption:any; + // 实例对象 + chartIntance:any; + // 数据变化 + updateOption:any; + chartDataChange(){ + this.updateOption = this.chartData; + // 要等到updateOption渲染完再执行 + this.chartIntance.on('finished',()=>{ + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:0 + }) + // 由于所有视图变化渲染都会执行,更新完注销此事件 + this.chartIntance.off('finished') + }) + } + + chartInit(chart){ + this.chartIntance = chart; + } + + pieMouseOver(e){ + this.chartIntance.dispatchAction({ + type:'downplay' + }) + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:e.dataIndex + }) + } + + pieMouseOut(e){ + this.chartIntance.dispatchAction({ + type:'highlight', + seriesIndex: 0, + dataIndex:e.dataIndex + }) + } + + +} -- cgit 1.2.3-korg