ng-devui-materials
Version:
Materials of DevUI Admin
84 lines (74 loc) • 2.07 kB
text/typescript
import {
AfterViewInit,
Component,
ElementRef,
OnInit,
ViewChild,
} from '@angular/core';
import { fromEvent, Subscription } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
import { EchartsService } from './echarts.service';
export class PieChartComponent implements OnInit, AfterViewInit {
pieData;
dataTablePieOption = {
columns: [
{
field: 'visit',
header: '访问反馈',
fieldType: 'text',
},
{
field: 'percentage',
header: '占比',
fieldType: 'text',
},
],
};
pieSource = [];
resizeSub: Subscription;
pieChart: any;
chartWrapper: ElementRef;
constructor(private echartsService: EchartsService) {}
ngOnInit(): void {
this.echartsService.getPie().subscribe((option) => {
this.pieData = option;
for (let i = 0; i < this.pieData.legend.data.length; i++) {
let temp = {
visit: this.pieData.legend.data[i],
percentage: this.pieData.series[0].data[i].value,
};
this.pieSource.push(temp);
}
});
}
getPieChart(e) {
this.pieChart = e;
}
ngAfterViewInit(): void {
this.resizeSub = fromEvent(window, 'resize')
.pipe(debounceTime(500))
.subscribe((v) => {
if (this.chartWrapper?.nativeElement?.clientWidth < 630) {
this.pieData.legend = {
orient: 'horizontal',
bottom: 'auto',
data: ['可容忍', '满意', '不可容忍', '极端异常', '良好'],
};
this.pieChart.setOption(this.pieData, true);
} else {
this.pieData.legend = {
orient: 'vertical',
left: 'auto',
top: 'center',
data: ['可容忍', '满意', '不可容忍', '极端异常', '良好'],
};
this.pieChart.setOption(this.pieData, true);
}
});
}
}