import {ChangeDetectorRef, Component, OnChanges, OnDestroy, OnInit, SimpleChanges} from '@angular/core'; import {SocketService} from "../../../shared/services/socket.service"; import {Subscription} from "rxjs"; import * as L from "leaflet"; @Component({ selector: 'app-overall-ground', templateUrl: './overall-ground.component.html', styleUrls: ['./overall-ground.component.scss'] }) export class OverallGroundComponent implements OnInit, OnDestroy { isClicked = false; isConnected = false; states = Array(6).fill(0); state1 = ''; state2 = ''; state3 = ''; state4 = ''; state5 = ''; state6 = ''; Sstate1 = false; Sstate2 = false; Sstate3 = false; Sstate4 = false; imageIcon = 'assets/images/sensor-off.png'; title = 'ALARM: SMOKE ALERT' private statusSubscription?: Subscription; private messageSubscription?: Subscription; private intervalId: any; constructor(private socketService$: SocketService) { } ngOnInit() { // this.socketService$.connect(); this.statusSubscription = this.socketService$.status$.subscribe(isConnected => { this.isConnected = isConnected; this.getReadings(); if (this.isConnected) { this.intervalId = setInterval(() => this.getReadings(), 5000); this.messageSubscription = this.socketService$.messages$.subscribe(message => { this.onMessage(message); }); } }); } ngOnDestroy(): void { if (this.statusSubscription) { this.statusSubscription.unsubscribe(); } if (this.messageSubscription) { this.messageSubscription.unsubscribe(); } if (this.intervalId) { clearInterval(this.intervalId); } this.socketService$.close(); } getReadings() { let str = {id: '0', type: 'get'}; this.socketService$.sendMessage(str); } toggleState1() { this.Sstate1 = !this.Sstate1; let str = {id: '0', type: 'cmd', state1: this.Sstate1.toString()}; this.socketService$.sendMessage(str); } toggleState2() { this.Sstate2 = !this.Sstate2; let str = {id: '0', type: 'cmd', state2: this.Sstate2.toString()}; this.socketService$.sendMessage(str); } getImageSource(): string { return (this.Sstate1 && this.Sstate2) || this.Sstate1 ? 'assets/images/sensor-on.png' : 'assets/images/sensor-off.png'; } onMessage(message: any) { if (message.id == '0' && message.type === 'get') { this.state1 = message.state1 === '0' ? 'ON' : 'OFF'; // 1 OFF this.state2 = message.state2 === '0' ? 'ON' : 'OFF'; // 1 OFF this.state3 = message.state3 === '1' ? 'ON' : 'OFF'; this.state4 = message.state4 === '1' ? 'ON' : 'OFF'; this.state5 = message.state5 === '1' ? 'ON' : 'OFF'; this.state6 = message.state6 === '1' ? 'ON' : 'OFF'; this.Sstate1 = this.state5 === 'ON'; this.Sstate2 = this.state6 === 'ON'; this.Sstate3 = this.state1 === 'ON'; this.Sstate4 = this.state2 === 'ON'; } if(this.Sstate1 && this.Sstate2) this.title = 'ALARM: VIBRATION ALERT' } }