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