153 lines
3.9 KiB
TypeScript
153 lines
3.9 KiB
TypeScript
import { Component } from "@angular/core";
|
|
import { Router } from "@angular/router";
|
|
import { BuildingService } from "../../service/monitoring-api.service";
|
|
import { DeviceService } from "../../service/device.service";
|
|
|
|
@Component({
|
|
selector: "app-device-control",
|
|
templateUrl: "./device-control.component.html",
|
|
styleUrls: ["./device-control.component.css"],
|
|
})
|
|
export class DeviceControlComponent {
|
|
data: any;
|
|
totalOn: any;
|
|
totalOff: any;
|
|
filteredRows: any[];
|
|
searchTerm: string = "";
|
|
buildingSelected: any;
|
|
statusSelected: any;
|
|
categorySelected: any;
|
|
dataMasterCategori: any;
|
|
dataBuildingList: any;
|
|
dataMasterStatus: any;
|
|
storedData: any;
|
|
spinnerFilterActive = false;
|
|
switchState: boolean;
|
|
|
|
public breadcrumb: any;
|
|
spinnerActive: boolean = false;
|
|
|
|
singlebasicSelected: any;
|
|
|
|
singleSelectArray = [
|
|
{ item_id: 1, item_text: "Alaska" },
|
|
{ item_id: 2, item_text: "California" },
|
|
{ item_id: 3, item_text: "Colorado" },
|
|
{ item_id: 4, item_text: "New Mexico" },
|
|
{ item_id: 5, item_text: "Alabama" },
|
|
{ item_id: 6, item_text: "Connecticut" },
|
|
{ item_id: 7, item_text: "New York" },
|
|
];
|
|
|
|
constructor(
|
|
private router: Router,
|
|
private deviceService: DeviceService,
|
|
private monitoringApiService: BuildingService
|
|
) {}
|
|
|
|
ngOnInit() {
|
|
this.breadcrumb = {
|
|
mainlabel: "Device",
|
|
links: [
|
|
{
|
|
name: "Home",
|
|
isLink: false,
|
|
link: "/dashboard/sales",
|
|
},
|
|
{
|
|
name: "Device",
|
|
isLink: false,
|
|
},
|
|
],
|
|
};
|
|
this.storedData = JSON.parse(localStorage.getItem("currentUser"));
|
|
this.buildingSelected = this.storedData.buildingId;
|
|
this.fetchData(
|
|
this.buildingSelected,
|
|
this.categorySelected,
|
|
this.statusSelected
|
|
);
|
|
this.dataListMaster();
|
|
this.dataListBuilding();
|
|
}
|
|
|
|
fetchData(buildingSelected, categorySelected, statusSelected) {
|
|
this.deviceService
|
|
.getDeviceData(buildingSelected, categorySelected, statusSelected)
|
|
.subscribe((res) => {
|
|
this.data = res;
|
|
this.filteredRows = this.data.results.data;
|
|
console.log(this.filteredRows);
|
|
});
|
|
}
|
|
|
|
dataListMaster() {
|
|
this.monitoringApiService.getMasterListData().subscribe((data) => {
|
|
const dataCategory = data.data.find(
|
|
(item) => item.name === "master_category"
|
|
).headerDetailParam;
|
|
const dataStatus = data.data.find(
|
|
(item) => item.name === "master_status"
|
|
).headerDetailParam;
|
|
this.dataMasterCategori = dataCategory.filter(
|
|
(item) => item.status === "2"
|
|
);
|
|
this.dataMasterStatus = dataStatus.filter((item) => item.status === "2");
|
|
});
|
|
}
|
|
|
|
dataListBuilding() {
|
|
this.monitoringApiService.getBuildingList().subscribe((data) => {
|
|
this.dataBuildingList = data.data.filter((item) => item.statusId === 2);
|
|
});
|
|
}
|
|
|
|
doFilter() {
|
|
this.spinnerFilterActive = true;
|
|
this.fetchData(
|
|
this.buildingSelected,
|
|
this.categorySelected,
|
|
this.statusSelected
|
|
);
|
|
setTimeout(() => {
|
|
this.spinnerFilterActive = false;
|
|
}, 3000);
|
|
}
|
|
|
|
filterRows() {
|
|
if (!this.searchTerm) {
|
|
this.filteredRows = [...this.data.results.data];
|
|
} else {
|
|
this.filteredRows = this.data.results.data.filter((row) =>
|
|
this.rowContainsSearchTerm(row)
|
|
);
|
|
}
|
|
}
|
|
|
|
rowContainsSearchTerm(row: any): boolean {
|
|
const searchTermLC = this.searchTerm.toLowerCase();
|
|
return Object.values(row).some(
|
|
(value) =>
|
|
value !== null && value.toString().toLowerCase().includes(searchTermLC)
|
|
);
|
|
}
|
|
|
|
switchChanged(ev, data) {
|
|
console.log(ev);
|
|
console.log(data);
|
|
const requestData = {
|
|
device_id: data.device_id,
|
|
switch: data.mapping[0].switch,
|
|
value: ev,
|
|
command_type: "on_off",
|
|
};
|
|
this.deviceService.deviceSwitch(requestData).subscribe((res) => {
|
|
console.log(res);
|
|
});
|
|
}
|
|
|
|
addFieldValue() {}
|
|
|
|
addDevice(): void {}
|
|
}
|