From eef69fa1194f6ab215b08a8baaf402d0539362cc Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Tue, 31 Jul 2018 15:56:59 +0800
Subject: [PATCH] 日历完善,设备相关功能开发

---
 src/app/routes/statistics/calendar/calendar.component.ts |   90 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 82 insertions(+), 8 deletions(-)

diff --git a/src/app/routes/statistics/calendar/calendar.component.ts b/src/app/routes/statistics/calendar/calendar.component.ts
index 09e03c1..2ba1c98 100644
--- a/src/app/routes/statistics/calendar/calendar.component.ts
+++ b/src/app/routes/statistics/calendar/calendar.component.ts
@@ -1,9 +1,11 @@
 import { Component, OnInit, OnDestroy } from '@angular/core';
 import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
+import { _HttpClient, ModalHelper } from '@delon/theme';
 import { HttpClient } from '@angular/common/http';
 import * as moment from 'moment';
 import { DeviceService } from '@business/services/http/device.service';
+import { TimeUnits } from '@business/enum/types.enum';
+import { AqiDetailComponent } from './aqi-detail/aqi-detail.component';
 
 @Component({
     selector: 'statistics-calender',
@@ -25,6 +27,7 @@
         private deviceService: DeviceService,
         private http: _HttpClient,
         public msg: NzMessageService,
+        private modalHelper: ModalHelper,
         private http2: HttpClient) {
     }
 
@@ -37,22 +40,93 @@
                 data: {}
             }
         }
-        // console.log(this.calendarDayCells);
+        const startTime = this.getPeriodDate(new Date(),TimeUnits.DAY,'start');
+        const endTime = this.getPeriodDate(new Date(),TimeUnits.HOUR,'end');
+        this.http.get(
+            'demo/get-dayaqis',{
+                startTime: startTime,
+                endTime: endTime
+            }
+        ).subscribe(
+            (res: any[]) => {
+                if(!!res && res.length >0) {
+                    Object.keys(this.calendarDayCells).forEach(
+                        (key) => {
+                            const index = Number(key) -1;
+                            if(res.length > index){
+                             const data = res[index];
+                                 if(!!data) {
+                                    const aqiJson = JSON.parse(data.aqi_json);
+                                    const cell = this.calendarDayCells[key];
+                                    cell.data = aqiJson;
+                                    cell.statusName = aqiJson.quality;
+                                    switch(aqiJson.quality) {
+                                        case '���' : cell.status = 'success';break;
+                                        case '���' : cell.status = 'success';break;
+                                        case '������������' : cell.status = 'warning';break;
+                                        case '������������' : cell.status = 'warning';break;
+                                        case '������������' : cell.status = 'error';break;
+                                        default: cell.status = 'success';break;
+                                    }
+                                 }
+                            }
+                        }
+                    );
+                }
+            }
+        );
     }
-
+    private getPeriodDate(value: Date , timeUnit: TimeUnits,type?: 'start'|'end' ): Date {
+        let month = 0;
+        let day = 1;
+        let hour = 0;
+        let minute = 0;
+        let second = 0; 
+        let millisecond = 0;
+        if ('end' === type) {
+            month = 11;
+            day = 31;
+            hour = 23;
+            minute = 59;
+            second = 59;
+            millisecond = 999;
+        }
+        const mo = moment(value);
+        switch ( timeUnit ) {
+            case TimeUnits.MONTH:
+            mo.month(month).date(day).hour(hour).minute(minute).second(second).millisecond(millisecond); break;
+            case TimeUnits.DAY:
+            mo.date(day).hour(hour).minute(minute).second(second).millisecond(millisecond); break;
+            case TimeUnits.HOUR:
+            mo.hour(hour).minute(minute).second(second).millisecond(millisecond); break;
+            case TimeUnits.MINUTE:
+            mo.minute(minute).second(second).millisecond(millisecond); break;
+            // case TimeUnits.MINUTE:
+            // mo.second(second).millisecond(millisecond); break;
+        }
+        return mo.toDate();
+    }
     ngOnDestroy(): void {
     }
     // ��������������� ���������
     calendarClick(mo: moment.Moment) {
-        console.log(mo.format('DD'));
+        // console.log(mo.format('DD'));
+        const dayKey = mo.format('DD');
+        const selectedMoment = mo;
+        const dayData = this.calendarDayCells[dayKey];
+        if( !!dayData ) {
+            this.modalHelper.open( AqiDetailComponent, { dayData,selectedMoment }).subscribe(
+                res => {}
+            );
+        }
     }
     public isExpire(mo: moment.Moment):boolean {
-        //  console.log(moment().valueOf());
-        //  console.log(mo.valueOf());
-        //  console.log(moment().valueOf() < mo.valueOf());
          return moment().valueOf() < mo.valueOf();
     }
+    public isCellExist(mo: moment.Moment):boolean {
+         return !!this.calendarDayCells[mo.format('DD')];
+    }
     loadCalendar(event) {
-        console.log(event);
+        // console.log(event);
     }
 }

--
Gitblit v1.8.0