Updated to work with new battery schema
This commit is contained in:
		@@ -42,27 +42,55 @@ export class BatteryService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    constructor(private firestore: AngularFirestore) {
 | 
			
		||||
        this.firestore.collection('Battery').doc('170614D').snapshotChanges().subscribe(snap => {
 | 
			
		||||
            this.lastUpdate = new Date().getTime();
 | 
			
		||||
            let data: any = snap.payload.data();
 | 
			
		||||
            this.relayMode = data.config.relayMode ? data.config.relayMode.toString() : 'null';
 | 
			
		||||
            this.batteries = Object.keys(data.modules).map(key => {
 | 
			
		||||
                let last = data.modules[key].length - 1;
 | 
			
		||||
        let afterDate = new Date();
 | 
			
		||||
        afterDate.setDate(afterDate.getDate() - 1);
 | 
			
		||||
 | 
			
		||||
        this.firestore.collection('Battery').doc('170614D').collection('data', ref => ref.where('timestamp', '>=', afterDate).orderBy('timestamp')).valueChanges().subscribe(data => {
 | 
			
		||||
            this.batteries = data.reduce((acc, row) => {
 | 
			
		||||
                row.payload.forEach((data, i) => {
 | 
			
		||||
                    if(!acc[i]) acc[i] = [];
 | 
			
		||||
                    acc[i].push(Object.assign(data, {timestamp: row.timestamp.toDate()}));
 | 
			
		||||
                });
 | 
			
		||||
                return acc;
 | 
			
		||||
            }, []).map((module, i) => {
 | 
			
		||||
                const last = module[module.length - 1];
 | 
			
		||||
                return {
 | 
			
		||||
                    charge: data.modules[key][last].charge,
 | 
			
		||||
                    chargeHistory: data.modules[key].map(val => ({name: val.timestamp.toDate(), value: val.charge})),
 | 
			
		||||
                    lastUpdate: data.modules[key][last].timestamp.toDate(),
 | 
			
		||||
                    name: key,
 | 
			
		||||
                    temp: data.modules[key][last].temp,
 | 
			
		||||
                    tempHistory: data.modules[key].map(val => ({name: val.timestamp.toDate(), value: val.temp}))
 | 
			
		||||
                }
 | 
			
		||||
                    charge: last.charge,
 | 
			
		||||
                    chargeHistory: module.map(row => ({name: row.timestamp, value: row.temp})),
 | 
			
		||||
                    lastUpdate: last.timestamp,
 | 
			
		||||
                    name: `Module ${i + 1}`,
 | 
			
		||||
                    temp: last.temp,
 | 
			
		||||
                    tempHistory: module.map(row => ({name: row.timestamp, value: row.temp}))
 | 
			
		||||
                };
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            this.lastCharge.push(this.charge);
 | 
			
		||||
            this.lastCharge.splice(0, this.lastCharge.length - 5);
 | 
			
		||||
            this.lastUpdate = this.batteries.reduce((acc, battery) => acc > battery.lastUpdate ? acc : battery.lastUpdate, 0);
 | 
			
		||||
            this.charge = this.batteries.reduce((acc, battery) => acc + battery.charge, 0) / 2;
 | 
			
		||||
            this.temp = this.batteries.reduce((acc, battery) => acc + battery.temp, 0) / 4;
 | 
			
		||||
        });
 | 
			
		||||
            this.lastCharge.splice(0, this.lastCharge.length - 3);
 | 
			
		||||
            this.lastUpdate = this.batteries[0].lastUpdate;
 | 
			
		||||
            this.charge = this.batteries.reduce((acc, module) => acc + module.charge, 0) / 2;
 | 
			
		||||
            this.temp = this.batteries.reduce((acc, module) => acc + module.temp, 0) / this.batteries.length;
 | 
			
		||||
        })
 | 
			
		||||
        // .snapshotChanges().subscribe(snap => {
 | 
			
		||||
        //     this.lastUpdate = new Date().getTime();
 | 
			
		||||
        //     let data: any = snap.payload.data();
 | 
			
		||||
        //     this.relayMode = data.config.relayMode ? data.config.relayMode.toString() : 'null';
 | 
			
		||||
        //     this.batteries = Object.keys(data.modules).map(key => {
 | 
			
		||||
        //         let last = data.modules[key].length - 1;
 | 
			
		||||
        //         return {
 | 
			
		||||
        //             charge: data.modules[key][last].charge,
 | 
			
		||||
        //             chargeHistory: data.modules[key].map(val => ({name: val.timestamp.toDate(), value: val.charge})),
 | 
			
		||||
        //             lastUpdate: data.modules[key][last].timestamp.toDate(),
 | 
			
		||||
        //             name: key,
 | 
			
		||||
        //             temp: data.modules[key][last].temp,
 | 
			
		||||
        //             tempHistory: data.modules[key].map(val => ({name: val.timestamp.toDate(), value: val.temp}))
 | 
			
		||||
        //         }
 | 
			
		||||
        //     });
 | 
			
		||||
        //     this.lastCharge.push(this.charge);
 | 
			
		||||
        //     this.lastCharge.splice(0, this.lastCharge.length - 5);
 | 
			
		||||
        //     this.lastUpdate = this.batteries.reduce((acc, battery) => acc > battery.lastUpdate ? acc : battery.lastUpdate, 0);
 | 
			
		||||
        //     this.charge = this.batteries.reduce((acc, battery) => acc + battery.charge, 0) / 2;
 | 
			
		||||
        //     this.temp = this.batteries.reduce((acc, battery) => acc + battery.temp, 0) / 4;
 | 
			
		||||
        // });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    setRelayMode(mode?: string) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user