From 1fdd2c6fe276c5d9849c14739eaba37061264eb5 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Mon, 16 Jul 2018 11:36:33 +0800 Subject: [PATCH] 统计分析 划分独立模块 --- src/app/routes/home-page/home-page/home-page.component.ts | 96 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 87 insertions(+), 9 deletions(-) diff --git a/src/app/routes/home-page/home-page/home-page.component.ts b/src/app/routes/home-page/home-page/home-page.component.ts index 0bb0017..49e739f 100644 --- a/src/app/routes/home-page/home-page/home-page.component.ts +++ b/src/app/routes/home-page/home-page/home-page.component.ts @@ -13,6 +13,8 @@ constructor( private http:_HttpClient, ) { + this.reloadAqiChart(); + this.reloadMeteChart() } salesData: any[] = [ ]; ngOnInit() { @@ -27,22 +29,52 @@ this.cardData.temperature = conRes.data.condition.temp; this.cardData.api = aqiRes.data.aqi.value; this.cardData.pm25 = aqiRes.data.aqi.pm25; + this.http.get('/aqi/forecast24hours',{base: this.cardData.pm25,range: 10}).subscribe( + (res: any) => { + this.aqiEchartsIntance.setOption( + { + series: [{type: 'line', data: res}] + } + ) + } + ); + this.http.get('/aqi/forecast24hours',{base: this.cardData.temperature,range: 5}).subscribe( + (res: any) => { + this.meteEchartsIntance.setOption( + { + series: [{type: 'line', data: res}] + } + ) + } + ); } } ); this.http.get('/chart').subscribe((res: any) => { - // this.webSite = res.visitData.slice(0, 10); - this.salesData = res.salesData; - // this.offlineChartData = res.offlineChartData; - }); + res.offlineData.forEach((item: any) => { + item.chart = Object.assign([], res.offlineChartData); + }); + this.data = res; + this.salesData = res.salesData; + this.loading = false; + this.changeSaleType(); + }); + } - public aqiChartOption + + public aqiChartOption = {}; public aqiEchartsIntance; public aqiChartLoading = false; public onApiChartInit(e): void { this.aqiEchartsIntance = e; } - private reloadChart(): void { + public meteChartOption = {}; + public meteEchartsIntance; + public meteChartLoading = false; + private onMeteChartInit(e): void { + this.meteEchartsIntance = e; + } + private reloadAqiChart(): void { // const timeList = this.grid.columns.map(item => item.text); if (!!this.aqiEchartsIntance) { this.aqiChartOption = null; @@ -55,8 +87,26 @@ // this.initOpton(chartOption ,{ xAxis : [{data : []}]}); // this.aqiChartOption = true; - this.initOpton(this.aqiChartOption ,{ xAxis : [{data : []}]}); + this.initOpton(this.aqiChartOption ,{ xAxis : [{data : this.newArray(0, 24, null, '���')}]}); } + private reloadMeteChart(): void { + if (!!this.aqiEchartsIntance) { + this.aqiChartOption = null; + this.aqiEchartsIntance.clear(); + } + this.initOpton(this.meteChartOption ,{ xAxis : [{data : this.newArray(0, 24, null, '���')}]}); + } + private newArray = (startOrLen: number, len?: number, prefix?: string, suffix?: string) => { + const result = []; + const s = !!len ? startOrLen : 0; + len = !!len ? len : startOrLen; + suffix = !!suffix ? suffix : ''; + prefix = !!prefix ? prefix : ''; + for (let i = s; result.length < len; i++) { + result.push(prefix + i + suffix); + } + return result; +} private initOpton(chartOption,opt: {[key: string]: object}) { const defaultOption = { title: { @@ -99,7 +149,35 @@ series : [ ] }; - $.extend(true, defaultOption, opt); - chartOption = defaultOption; + Object.assign( defaultOption, opt); + Object.assign(chartOption, defaultOption); } + //---------mock------------------- + data: any = { + salesData: [], + offlineData: [] + }; + sort(sortName, sortValue) { + this.data.searchData = [ + ...(<any[]>this.data.searchData).sort((a, b) => { + if (a[ sortName ] > b[ sortName ]) { + return (sortValue === 'ascend') ? 1 : -1; + } else if (a[ sortName ] < b[ sortName ]) { + return (sortValue === 'ascend') ? -1 : 1; + } else { + return 0; + } + }) + ]; + } + loading = true; + salesType = 'all'; + salesPieData: any; + salesTotal = 0; + changeSaleType() { + this.salesPieData = this.salesType === 'all' ? this.data.salesTypeData : ( + this.salesType === 'online' ? this.data.salesTypeDataOnline : this.data.salesTypeDataOffline + ); + if (this.salesPieData) this.salesTotal = this.salesPieData.reduce((pre, now) => now.y + pre, 0); + } } -- Gitblit v1.8.0