import { Component, OnInit ,ElementRef} from '@angular/core';
import { HttpClient } from '@angular/common/http'
import { HighlightSpanKind } from 'typescript';
declare var echarts: any;
declare var westeros: any;
declare var AMap: any;
declare var Loca: any;
@Component({
selector: 'app-home2',
templateUrl: './home2.component.html',
styleUrls: ['./home2.component.scss']
})
export class Home2Component implements OnInit {
constructor(private http:HttpClient,public element: ElementRef) { }
unitTypeStatistics:any //单位类型统计
myUnitTypeChart:any //单位类型统计图表
unitTypeOption:any = {
title: {
// text: '单位类型统计',
// left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '占比:
{b} : {c} ({d}%)'
},
legend: {
// orient: 'vertical',
// top: 'middle',
bottom: 0,
left: 'center',
data: []
},
series: [
{
type: 'pie',
radius: '65%',
center: ['50%', '50%'],
selectedMode: 'single',
data: [
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}; //单位类型数据
planStateStatistics //预案状态统计
myPlanStateChart:any //预案状态统计图表
planStateOption:any = {
title: {
// text: '预案编制情况统计',
// left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '占比:
{b} : {c} ({d}%)'
},
legend: {
// orient: 'vertical',
// top: 'middle',
bottom: 0,
left: 'center',
data: ['审核通过','已提交','已公开']
},
series: [
{
type: 'pie',//类型为饼图
radius: '65%',
center: ['50%', '50%'],
selectedMode: 'single',
data: [
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}; //预案状态数据
planTypeStatistics //各类型预案统计
myPlanTypeChart:any //各类型预案图表
planTypeOption:any = {
title: {
// text: '各类型预案情况统计',
// left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '占比:
{b} : {c} ({d}%)'
},
legend: {
// orient: 'vertical',
// top: 'middle',
bottom: 0,
left: 'center',
data: ['卡片预案','二维预案','三维预案','其他预案']
},
series: [
{
type: 'pie',
radius: '65%',
center: ['50%', '50%'],
selectedMode: 'single',
data: [
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}; //预案状态数据
trendStatistics //趋势统计
trendChart:any //趋势图表
trendOption:any = {
title: {
// text: '预案趋势统计'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['新增预案', '修改预案']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月','十二月']
},
yAxis: {
type: 'value'
},
series: [
{
name: '新增预案',
type: 'line',
stack: '总量',
data: []
},
{
name: '修改预案',
type: 'line',
stack: '总量',
data: []
}
]
}; //预案状态数据
xxxChart:any
xxxOption:any = {
title: {
// text: '南丁格尔玫瑰图',
// subtext: '纯属虚构',
// left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a}
{b} : {c} ({d}%)'
},
legend: {
left: 'center',
top: 'bottom',
data: ['1', '2', '3', '4']
},
toolbox: {
show: true,
feature: {
mark: {show: true},
dataView: {show: true, readOnly: false},
magicType: {
show: true,
type: ['pie', 'funnel']
},
restore: {show: true},
saveAsImage: {show: true}
}
},
series: [
{
name: '面积模式',
type: 'pie',
radius: [30, 110],
// center: ['75%', '50%'],
roseType: 'area',
data: [
{value: 10, name: '1'},
{value: 5, name: '2'},
{value: 15, name: '3'},
{value: 25, name: '4'}
]
}
]
}
yyyChart:any
yyyOption:any = {
color: ['#3398DB'],
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: '直接访问',
type: 'bar',
barWidth: '60%',
data: [10, 52, 200, 334, 390, 330, 220]
}
]
};
t:any
time:any
theme:any //主题风格
ngOnInit(): void {
// const map = new AMap.Map(this.element.nativeElement.querySelector('#map'), {
// mapStyle: 'amap://styles/1de318cbb8d12c02303a22c550b9ccc9',
// // pitch: 0,
// features: ['bg', 'road'],//地图显示要素
// zoom: 6,
// center: [116.408075, 39.950187],
// // viewMode: '3D'
// });
// const layer = new Loca.DistrictLayer({
// map: map
// });
// layer.setMap(map);
this.getTime()
setTimeout(() => {
this.myUnitTypeChart = echarts.init(this.element.nativeElement.querySelector('#unitType'),'westeros');
this.myPlanStateChart = echarts.init(this.element.nativeElement.querySelector('#planStates') ,'westeros');
this.myPlanTypeChart = echarts.init(this.element.nativeElement.querySelector('#planType'),'westeros');
this.trendChart = echarts.init(this.element.nativeElement.querySelector('#trend'),'westeros');
this.xxxChart = echarts.init(this.element.nativeElement.querySelector('#xxx'),'westeros');
this.xxxChart.setOption(this.xxxOption);
this.yyyChart = echarts.init(this.element.nativeElement.querySelector('#yyy'),'westeros');
this.yyyChart.setOption(this.yyyOption);
}, 0);
this.chartsSetOption();
}
getTime():any{
this.t = setInterval(()=>{
var dt = new Date();
var y = dt.getFullYear();
var mt = dt.getMonth() + 1;
var day = dt.getDate();
var h = dt.getHours(); //获取时
var m = dt.getMinutes(); //获取分
var s = dt.getSeconds(); //获取秒
this.time = "当前时间:" + y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒";
}, 1000); //開始运行
}
chartsSetOption(){
this.http.get("/api/StatisticsAnalysis").subscribe((data:any)=>{
//单位类型统计
this.unitTypeStatistics = data.companyStatistics.buildingTypeStatistics.buildingTypes
this.unitTypeStatistics.forEach(item => {
item.name = item.buildingTypeName
item.value = item.count
// this.unitTypeOption.legend.data.push(item.buildingTypeName)
});
this.unitTypeOption.series[0].data = this.unitTypeStatistics
this.myUnitTypeChart.setOption(this.unitTypeOption,true);
//预案状态统计
this.planStateStatistics = data.planStatistics.planningStatistics
this.planStateOption.series[0].data.push({name:'审核通过',value:data.planStatistics.planningStatistics.approvedCount})
this.planStateOption.series[0].data.push({name:'已提交',value:data.planStatistics.planningStatistics.committedCount})
this.planStateOption.series[0].data.push({name:'已公开',value:data.planStatistics.planningStatistics.publicCount})
this.myPlanStateChart.setOption(this.planStateOption,true);
//各类型预案统计
this.planTypeStatistics = data.planStatistics.planTypeStatistics
this.planTypeOption.series[0].data.push({name:'卡片预案',value:data.planStatistics.planTypeStatistics.planCardCount})
this.planTypeOption.series[0].data.push({name:'二维预案',value:data.planStatistics.planTypeStatistics.plan2DCount})
this.planTypeOption.series[0].data.push({name:'三维预案',value:data.planStatistics.planTypeStatistics.plan3DCount})
this.planTypeOption.series[0].data.push({name:'其他预案',value:data.planStatistics.planTypeStatistics.planOtherCount})
this.myPlanTypeChart.setOption(this.planTypeOption,true);
//预案趋势图统计
this.trendStatistics = data.planStatistics.trendStatistics
// this.trendOption.series = []
this.trendStatistics.added.forEach(item=>{
this.trendOption.series[0].data.push(item.count)
})
this.trendStatistics.modified.forEach(item=>{
this.trendOption.series[1].data.push(item.count)
})
this.trendChart.setOption(this.trendOption,true);
})
}
ngOnDestroy(){
window.clearInterval(this.t) //清一遍定时器
}
}