|
@@ -31,7 +31,7 @@ import {AngularMyDatePickerDirective,IAngularMyDpOptions, IMyDateModel} from 'an
|
|
|
|
|
|
|
|
|
|
|
|
|
export class AssetsComponent implements OnInit {
|
|
export class AssetsComponent implements OnInit {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
title = "Plantas";
|
|
title = "Plantas";
|
|
|
|
|
|
|
|
organizationId:string;
|
|
organizationId:string;
|
|
@@ -39,7 +39,6 @@ export class AssetsComponent implements OnInit {
|
|
|
listEnergyProduced:any;
|
|
listEnergyProduced:any;
|
|
|
error:boolean;
|
|
error:boolean;
|
|
|
errorMessage:string;
|
|
errorMessage:string;
|
|
|
- test:any;
|
|
|
|
|
errortest:any;
|
|
errortest:any;
|
|
|
chartjs:boolean;
|
|
chartjs:boolean;
|
|
|
chart1: Chart;
|
|
chart1: Chart;
|
|
@@ -47,14 +46,14 @@ export class AssetsComponent implements OnInit {
|
|
|
metersValues:any;
|
|
metersValues:any;
|
|
|
view:string;
|
|
view:string;
|
|
|
|
|
|
|
|
|
|
+
|
|
|
//For daterange
|
|
//For daterange
|
|
|
daysLabels:any = {su: 'Dom', mo: 'Lun', tu: 'Mar', we: 'Mie', th: 'Jue', fr: 'Vie', sa: 'Sab'};
|
|
daysLabels:any = {su: 'Dom', mo: 'Lun', tu: 'Mar', we: 'Mie', th: 'Jue', fr: 'Vie', sa: 'Sab'};
|
|
|
monthsLabels:any = { 1: 'Ene', 2: 'Feb', 3: 'Mar', 4: 'Abr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Ago', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dic' };
|
|
monthsLabels:any = { 1: 'Ene', 2: 'Feb', 3: 'Mar', 4: 'Abr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Ago', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dic' };
|
|
|
todayBtnTxt:string = 'Hoy';
|
|
todayBtnTxt:string = 'Hoy';
|
|
|
|
|
|
|
|
-
|
|
|
|
|
myDpOptions: IAngularMyDpOptions = {
|
|
myDpOptions: IAngularMyDpOptions = {
|
|
|
- dateRange: true,
|
|
|
|
|
|
|
+ dateRange: false,
|
|
|
dateFormat: 'dd/mm/yyyy',
|
|
dateFormat: 'dd/mm/yyyy',
|
|
|
dayLabels: this.daysLabels,
|
|
dayLabels: this.daysLabels,
|
|
|
monthLabels: this.monthsLabels,
|
|
monthLabels: this.monthsLabels,
|
|
@@ -66,13 +65,10 @@ export class AssetsComponent implements OnInit {
|
|
|
|
|
|
|
|
// For chartjs
|
|
// For chartjs
|
|
|
tsLabels: any[];
|
|
tsLabels: any[];
|
|
|
- polarLabels: any[];
|
|
|
|
|
- serieA: any[];
|
|
|
|
|
- serieB: any[];
|
|
|
|
|
- serieC: any[];
|
|
|
|
|
barChartColors:any = ['#3c8dbc', '#00a65a', '#f56954']
|
|
barChartColors:any = ['#3c8dbc', '#00a65a', '#f56954']
|
|
|
-
|
|
|
|
|
metersData:any;
|
|
metersData:any;
|
|
|
|
|
+ initialDate:any;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
public barChartType: ChartType;
|
|
public barChartType: ChartType;
|
|
|
public barChartLegend:boolean;
|
|
public barChartLegend:boolean;
|
|
@@ -103,27 +99,53 @@ export class AssetsComponent implements OnInit {
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
ngOnInit() {
|
|
|
|
|
|
|
|
- let plants = this.plantsService.getAssets();
|
|
|
|
|
|
|
+ let plants = this.plantsService.getAllAssets();
|
|
|
let energy_produced = this.plantsService.getAssetsProducedEnergy();
|
|
let energy_produced = this.plantsService.getAssetsProducedEnergy();
|
|
|
|
|
|
|
|
|
|
+ // Default date is today and set it on a string var and initialize dateRange plugin
|
|
|
|
|
+ this.initialDate = new Date("2019-09-15").toISOString().slice(0, 10);
|
|
|
|
|
+ console.log(this.initialDate);
|
|
|
|
|
+ if (this.myDateInit) {
|
|
|
|
|
+ let begin: Date = new Date("2019-09-15");
|
|
|
|
|
+ this.model = {
|
|
|
|
|
+ isRange: false,
|
|
|
|
|
+ singleDate: {
|
|
|
|
|
+ date: {
|
|
|
|
|
+ year: begin.getFullYear(), month: begin.getMonth() + 1, day: begin.getDate() + 1
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// Observable of two objects
|
|
// Observable of two objects
|
|
|
forkJoin([plants, energy_produced]).subscribe(results => {
|
|
forkJoin([plants, energy_produced]).subscribe(results => {
|
|
|
|
|
+ console.log(results[0]["data"]);
|
|
|
if (localStorage.getItem("email") == "inverlec@grupomerelec.com"){
|
|
if (localStorage.getItem("email") == "inverlec@grupomerelec.com"){
|
|
|
- this.listAssets = [{
|
|
|
|
|
- name: "Inversiones MERELEC S.A de C.V",
|
|
|
|
|
- id: 1
|
|
|
|
|
- }]
|
|
|
|
|
|
|
+ this.listAssets = [
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "Inversiones MERELEC S.A de C.V",
|
|
|
|
|
+ id: '5d70330cb288f25b679c68a8'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "Inversiones MERELEC 2 S.A de C.V",
|
|
|
|
|
+ id: '5d70330cb288f25b679c68n8'
|
|
|
|
|
+ },
|
|
|
|
|
+ ]
|
|
|
|
|
+
|
|
|
|
|
+ this.view = "month";
|
|
|
|
|
+ this.onMeasureClickRange(this.view, this.initialDate);
|
|
|
|
|
+
|
|
|
|
|
+ console.log(this.listAssets[0]["id"]);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
-
|
|
|
|
|
- this.listAssets = results[0]["assets"];
|
|
|
|
|
- this.route.queryParams.subscribe(params => {
|
|
|
|
|
- this.organizationId = params['id'];
|
|
|
|
|
- console.log(this.organizationId); // Print the parameter to the console.
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ this.listAssets = results[0]["data"];
|
|
|
|
|
+ console.log(this.listAssets[0]["id"]);
|
|
|
|
|
+ this.view = "month";
|
|
|
|
|
+ this.onMeasureClickRange(this.view, this.initialDate);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- this.listEnergyProduced = results[1];
|
|
|
|
|
|
|
+ // Energy produced given an assetID
|
|
|
|
|
+ this.listEnergyProduced = results[1];
|
|
|
},
|
|
},
|
|
|
(err) => {
|
|
(err) => {
|
|
|
Swal.fire({
|
|
Swal.fire({
|
|
@@ -131,121 +153,15 @@ export class AssetsComponent implements OnInit {
|
|
|
title: 'Error en el servidor',
|
|
title: 'Error en el servidor',
|
|
|
text: "No su pudo obtener la informacion"
|
|
text: "No su pudo obtener la informacion"
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
- this.view = "month";
|
|
|
|
|
-
|
|
|
|
|
- this.isActive = [false, false, true, false];
|
|
|
|
|
- this.logsService.getEnergyProducedByMonth().toPromise()
|
|
|
|
|
- .then((data: any) => {
|
|
|
|
|
- // Get all the keys(each meter name) of the returned promise
|
|
|
|
|
- this.metersKeys = Object.keys(data["1M"]);
|
|
|
|
|
-
|
|
|
|
|
- // Get all the values according to each index (meter)
|
|
|
|
|
- this.metersValues = Object.values(data["1M"]).map(sub => sub);
|
|
|
|
|
- let meterKeys2 = Object.keys(this.metersValues);
|
|
|
|
|
-
|
|
|
|
|
- // Re-Initialize Json object
|
|
|
|
|
- this.metersData = [];
|
|
|
|
|
-
|
|
|
|
|
- // Json object construction for passing its values to the chartjs datasets according to its requirements
|
|
|
|
|
- for (let prop in meterKeys2) {
|
|
|
|
|
- let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersKeys[prop];
|
|
|
|
|
- this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: this.metersValues[prop].map(obj => obj.total_energy_kWh).reverse()});
|
|
|
|
|
- this.barChartLabels = this.metersValues[prop].map(obj => formatDate(obj.dateMax, 'dd/MM','es-Es','-0600')).reverse();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Chart draw
|
|
|
|
|
- this.chart1 = new Chart('canvas', {
|
|
|
|
|
- type: 'bar',
|
|
|
|
|
- options: {
|
|
|
|
|
- title: {
|
|
|
|
|
- display: true,
|
|
|
|
|
- },
|
|
|
|
|
- tooltips: {
|
|
|
|
|
- mode: 'index',
|
|
|
|
|
- callbacks: {
|
|
|
|
|
- // Get the total of the energy produced in every point and show it in the hover tooltip
|
|
|
|
|
- label: function (tooltipItem, data) {
|
|
|
|
|
- var label = data.datasets[tooltipItem.datasetIndex].label || '';
|
|
|
|
|
- var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
|
|
|
|
|
- var total = 0;
|
|
|
|
|
-
|
|
|
|
|
- for (var i = 0; i < data.datasets.length; i++)
|
|
|
|
|
- total += +data.datasets[i].data[tooltipItem.index];
|
|
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
- if (tooltipItem.datasetIndex !== data.datasets.length - 1) {
|
|
|
|
|
- return label + " : " + value;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- responsive: true,
|
|
|
|
|
- maintainAspectRatio: false,
|
|
|
|
|
- scales: {
|
|
|
|
|
- xAxes: [{
|
|
|
|
|
- stacked: true,
|
|
|
|
|
- }],
|
|
|
|
|
- yAxes: [{
|
|
|
|
|
- stacked: true
|
|
|
|
|
- }]
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- data: {
|
|
|
|
|
- labels: this.barChartLabels,
|
|
|
|
|
- datasets:
|
|
|
|
|
- this.metersData,
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
- this.chartjs = true;
|
|
|
|
|
- });
|
|
|
|
|
this.chartjs = true;
|
|
this.chartjs = true;
|
|
|
setTimeout(()=>{
|
|
setTimeout(()=>{
|
|
|
Swal.close();
|
|
Swal.close();
|
|
|
}, 2700);
|
|
}, 2700);
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- if (this.myDateInit) {
|
|
|
|
|
- // Initialize to specific date range with IMyDate object.
|
|
|
|
|
- // Begin date = today. End date = today + 3.
|
|
|
|
|
- let begin: Date = new Date();
|
|
|
|
|
- let end: Date = new Date();
|
|
|
|
|
- begin.setDate(end.getDate() - 31);
|
|
|
|
|
- console.log("if");
|
|
|
|
|
- this.model = {
|
|
|
|
|
- isRange: true,
|
|
|
|
|
- singleDate: null,
|
|
|
|
|
- dateRange: {
|
|
|
|
|
- beginDate: {
|
|
|
|
|
- year: begin.getFullYear(), month: begin.getMonth() + 1, day: begin.getDate()
|
|
|
|
|
- },
|
|
|
|
|
- endDate: {
|
|
|
|
|
- year: end.getFullYear(), month: end.getMonth() + 1, day: end.getDate()
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- // Initialize to specific date range with a javascript date object.
|
|
|
|
|
- // Begin date = today. End date = today + 3.
|
|
|
|
|
- let begin: Date = new Date();
|
|
|
|
|
- let end: Date = new Date();
|
|
|
|
|
- end.setDate(end.getDate() + 3);
|
|
|
|
|
- console.log("else");
|
|
|
|
|
- this.model = {
|
|
|
|
|
- isRange: true,
|
|
|
|
|
- singleDate: null,
|
|
|
|
|
- dateRange: {
|
|
|
|
|
- beginJsDate: begin,
|
|
|
|
|
- endJsDate: end
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // Default check asset dropdown if a value is equal to an assetID
|
|
|
isSelected(){
|
|
isSelected(){
|
|
|
if(this.organizationId!=undefined){
|
|
if(this.organizationId!=undefined){
|
|
|
return true;
|
|
return true;
|
|
@@ -254,237 +170,126 @@ export class AssetsComponent implements OnInit {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- onDateChanged(event: IMyDateModel) {
|
|
|
|
|
- console.log('onDateChanged(): ', event);
|
|
|
|
|
- let beginDate = `${event.dateRange.beginDate.year}-${event.dateRange.beginDate.month}-${event.dateRange.beginDate.day}`;
|
|
|
|
|
- let endDate = `${event.dateRange.endDate.year}-${event.dateRange.endDate.month}-${event.dateRange.endDate.day}`;
|
|
|
|
|
|
|
|
|
|
|
|
+ // Trigger again the chart with the selected assetID
|
|
|
|
|
+ onChangeObj(event:any) {
|
|
|
|
|
+ this.onMeasureClickRange(this.view, this.initialDate, event.target.value);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Change the date range of the chart, according to the selected view (daily, weekly, ...)
|
|
|
|
|
+ onDateChanged(event: IMyDateModel) {
|
|
|
|
|
+ let endDate = `${event.singleDate.date.year}-${event.singleDate.date.month}-${event.singleDate.date.day}`;
|
|
|
switch (this.view)
|
|
switch (this.view)
|
|
|
{
|
|
{
|
|
|
case "day":
|
|
case "day":
|
|
|
- console.log("day");
|
|
|
|
|
- this.onMeasureClickDay(beginDate);
|
|
|
|
|
|
|
+ this.onMeasureClickRange(this.view, endDate);
|
|
|
break;
|
|
break;
|
|
|
case "week":
|
|
case "week":
|
|
|
- console.log("week");
|
|
|
|
|
- this.onMeasureClickWeek(beginDate, endDate);
|
|
|
|
|
|
|
+ this.onMeasureClickRange(this.view, endDate);
|
|
|
break;
|
|
break;
|
|
|
case "month":
|
|
case "month":
|
|
|
- console.log("month");
|
|
|
|
|
- this.onMeasureClickMonth(beginDate, endDate);
|
|
|
|
|
|
|
+ this.onMeasureClickRange(this.view, endDate);
|
|
|
break;
|
|
break;
|
|
|
case "year":
|
|
case "year":
|
|
|
- console.log("year");
|
|
|
|
|
- this.onMeasureYear(beginDate, endDate);
|
|
|
|
|
|
|
+ this.onMeasureClickRange(this.view, endDate);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
console.log("nada");
|
|
console.log("nada");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- onMeasureClickDay(measureDate?:string): void {
|
|
|
|
|
|
|
+ // Draw a measure chart using chartjs, given some params, view, for daily, weekly, monthly or yearly measures;
|
|
|
|
|
+ // measureDate, for a date range given a view and a paramID, for an specific assetID selected in the dropdown
|
|
|
|
|
+ onMeasureClickRange(view:string, measureDate?:string, paramId?:string): void {
|
|
|
Swal.fire({
|
|
Swal.fire({
|
|
|
allowOutsideClick: false,
|
|
allowOutsideClick: false,
|
|
|
type: 'info',
|
|
type: 'info',
|
|
|
text: 'Espere por favor...'
|
|
text: 'Espere por favor...'
|
|
|
});
|
|
});
|
|
|
Swal.showLoading();
|
|
Swal.showLoading();
|
|
|
- this.isActive = [true, false, false, false];
|
|
|
|
|
- this.view = "day";
|
|
|
|
|
-
|
|
|
|
|
- this.chart1.destroy();
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- this.logsService.getEnergyProducedByDay().toPromise()
|
|
|
|
|
- .then((data: any) => {
|
|
|
|
|
- // Get all the keys(each meter name) of the returned promise
|
|
|
|
|
- this.metersKeys = Object.keys(data["1D"]);
|
|
|
|
|
-
|
|
|
|
|
- // Get all the values according to each index (meter)
|
|
|
|
|
- this.metersValues = Object.values(data["1D"]).map(sub => sub);
|
|
|
|
|
- let meterKeys2 = Object.keys(this.metersValues);
|
|
|
|
|
|
|
+ this.view = view;
|
|
|
|
|
|
|
|
- // Re-Initialize Json object
|
|
|
|
|
- this.metersData = [];
|
|
|
|
|
-
|
|
|
|
|
- // Json object construction for passing its values to the chartjs datasets according to its requirements
|
|
|
|
|
- for (let prop in meterKeys2) {
|
|
|
|
|
- let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersKeys[prop];
|
|
|
|
|
- this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: this.metersValues[prop].map(obj => obj.total_energy_kWh).reverse()});
|
|
|
|
|
- this.barChartLabels = this.metersValues[0].map(obj => formatDate(obj.dateMin, 'hh:mm:ss','es-Es','-0600')).reverse();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // Chart (re)initialize, to prevent double load on changing range or views
|
|
|
|
|
+ if (this.chart1 != undefined){
|
|
|
this.chart1.destroy();
|
|
this.chart1.destroy();
|
|
|
- this.chart1 = undefined;
|
|
|
|
|
- // Chart draw
|
|
|
|
|
- this.chart1 = new Chart('canvas', {
|
|
|
|
|
- type: 'bar',
|
|
|
|
|
- options: {
|
|
|
|
|
- title: {
|
|
|
|
|
- display: true,
|
|
|
|
|
- },
|
|
|
|
|
- tooltips: {
|
|
|
|
|
- mode: 'index',
|
|
|
|
|
- callbacks: {
|
|
|
|
|
- // Get the total of the energy produced in every point and show it in the hover tooltip
|
|
|
|
|
- label: function (tooltipItem, data) {
|
|
|
|
|
- var label = data.datasets[tooltipItem.datasetIndex].label || '';
|
|
|
|
|
- var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
|
|
|
|
|
- var total = 0;
|
|
|
|
|
-
|
|
|
|
|
- for (var i = 0; i < data.datasets.length; i++)
|
|
|
|
|
- total += +data.datasets[i].data[tooltipItem.index];
|
|
|
|
|
-
|
|
|
|
|
- if (tooltipItem.datasetIndex !== data.datasets.length - 1) {
|
|
|
|
|
- return label + " : " + value;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- responsive: true,
|
|
|
|
|
- maintainAspectRatio: false,
|
|
|
|
|
- scales: {
|
|
|
|
|
- xAxes: [{
|
|
|
|
|
- stacked: true,
|
|
|
|
|
- }],
|
|
|
|
|
- yAxes: [{
|
|
|
|
|
- stacked: true
|
|
|
|
|
- }]
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- data: {
|
|
|
|
|
- labels: this.barChartLabels,
|
|
|
|
|
- datasets:
|
|
|
|
|
- this.metersData,
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
- this.chartjs = true;
|
|
|
|
|
- });
|
|
|
|
|
- setTimeout(()=>{
|
|
|
|
|
- Swal.close();
|
|
|
|
|
- }, 2700)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ this.chart1 = undefined;
|
|
|
|
|
+
|
|
|
|
|
+ let dateRange:string;
|
|
|
|
|
+ if (measureDate === undefined){
|
|
|
|
|
+ dateRange = this.initialDate;
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ dateRange = measureDate;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- onMeasureClickWeek(measureDateBegin?:string, measureDateEnd?:string): void {;
|
|
|
|
|
|
|
+ // Set default assetID if paramId doesn't come in the function call
|
|
|
|
|
+ let assetId:string;
|
|
|
|
|
+ if (paramId === undefined){
|
|
|
|
|
+ assetId = this.listAssets[0]["id"]; // Grab the first object
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ assetId = paramId;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Select an interval according to the API permitted param
|
|
|
|
|
+ let interval:string;
|
|
|
|
|
+ switch (view)
|
|
|
|
|
+ {
|
|
|
|
|
+ case "day":
|
|
|
|
|
+ interval = "1D";
|
|
|
|
|
+ this.isActive = [true, false, false, false];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "week":
|
|
|
|
|
+ interval = "7D";
|
|
|
|
|
+ this.isActive = [false, true, false, false];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "month":
|
|
|
|
|
+ interval = "1M";
|
|
|
|
|
+ this.isActive = [false, false, true, false];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "mtd": //TO DO
|
|
|
|
|
+ interval = "MTD";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "year":
|
|
|
|
|
+ interval = "YTD";
|
|
|
|
|
+ this.isActive = [false, false, false, true];
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ console.log("nada");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- Swal.fire({
|
|
|
|
|
- allowOutsideClick: false,
|
|
|
|
|
- type: 'info',
|
|
|
|
|
- text: 'Espere por favor...'
|
|
|
|
|
- });
|
|
|
|
|
- Swal.showLoading();
|
|
|
|
|
- this.view = "week";
|
|
|
|
|
- this.isActive = [false, true, false, false];
|
|
|
|
|
- this.chart1.destroy();
|
|
|
|
|
-
|
|
|
|
|
- this.logsService.getEnergyProducedByWeek().toPromise()
|
|
|
|
|
|
|
+ this.logsService.getEnergyProducedByParams(assetId,interval,dateRange).toPromise()
|
|
|
.then((data: any) => {
|
|
.then((data: any) => {
|
|
|
- // Get all the keys(each meter name) of the returned promise
|
|
|
|
|
- this.metersKeys = Object.keys(data["7D"]);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ this.metersData = [];
|
|
|
|
|
+ this.metersKeys = Object.keys(data["data"][0]["dataset"]);
|
|
|
|
|
+
|
|
|
// Get all the values according to each index (meter)
|
|
// Get all the values according to each index (meter)
|
|
|
- this.metersValues = Object.values(data["7D"]).map(sub => sub);
|
|
|
|
|
|
|
+ this.metersValues = Object.values(data["data"][0]["dataset"]);
|
|
|
|
|
+
|
|
|
|
|
+ // Get the keys of those values
|
|
|
let meterKeys2 = Object.keys(this.metersValues);
|
|
let meterKeys2 = Object.keys(this.metersValues);
|
|
|
-
|
|
|
|
|
- // Re-Initialize Json object
|
|
|
|
|
- this.metersData = [];
|
|
|
|
|
|
|
|
|
|
- // Json object construction for passing its values to the chartjs datasets according to its requirements
|
|
|
|
|
for (let prop in meterKeys2) {
|
|
for (let prop in meterKeys2) {
|
|
|
- let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersKeys[prop];
|
|
|
|
|
- this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: this.metersValues[prop].map(obj => obj.total_energy_kWh).reverse()});
|
|
|
|
|
- this.barChartLabels = this.metersValues[prop].map(obj => formatDate(obj.dateMax, 'EEEE dd','es-Es','-0600')).reverse();
|
|
|
|
|
|
|
+ let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersValues[prop]["label"];
|
|
|
|
|
+ let measure_values = Object.values(this.metersValues[prop]["data"].map(obj => obj.total_energy_kWh).reverse())
|
|
|
|
|
+ this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: measure_values });
|
|
|
}
|
|
}
|
|
|
- this.chart1.destroy();
|
|
|
|
|
- this.chart1 = undefined;
|
|
|
|
|
- // Chart draw
|
|
|
|
|
- this.chart1 = new Chart('canvas', {
|
|
|
|
|
- type: 'bar',
|
|
|
|
|
- options: {
|
|
|
|
|
- title: {
|
|
|
|
|
- display: true,
|
|
|
|
|
- },
|
|
|
|
|
- tooltips: {
|
|
|
|
|
- mode: 'index',
|
|
|
|
|
- callbacks: {
|
|
|
|
|
- // Get the total of the energy produced in every point and show it in the hover tooltip
|
|
|
|
|
- label: function (tooltipItem, data) {
|
|
|
|
|
- var label = data.datasets[tooltipItem.datasetIndex].label || '';
|
|
|
|
|
- var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
|
|
|
|
|
- var total = 0;
|
|
|
|
|
-
|
|
|
|
|
- for (var i = 0; i < data.datasets.length; i++)
|
|
|
|
|
- total += +data.datasets[i].data[tooltipItem.index];
|
|
|
|
|
-
|
|
|
|
|
- if (tooltipItem.datasetIndex !== data.datasets.length - 1) {
|
|
|
|
|
- return label + " : " + value;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- responsive: true,
|
|
|
|
|
- maintainAspectRatio: false,
|
|
|
|
|
- scales: {
|
|
|
|
|
- xAxes: [{
|
|
|
|
|
- stacked: true,
|
|
|
|
|
- }],
|
|
|
|
|
- yAxes: [{
|
|
|
|
|
- stacked: true
|
|
|
|
|
- }]
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- data: {
|
|
|
|
|
- labels: this.barChartLabels,
|
|
|
|
|
- datasets:
|
|
|
|
|
- this.metersData,
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
- this.chartjs = true;
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- setTimeout(()=>{
|
|
|
|
|
- Swal.close();
|
|
|
|
|
- }, 2700)
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- onMeasureClickMonth(measureDateBegin?:string, measureDateEnd?:string): void {
|
|
|
|
|
- Swal.fire({
|
|
|
|
|
- allowOutsideClick: false,
|
|
|
|
|
- type: 'info',
|
|
|
|
|
- text: 'Espere por favor...'
|
|
|
|
|
- });
|
|
|
|
|
- Swal.showLoading();
|
|
|
|
|
- this.view = "month";
|
|
|
|
|
- this.isActive = [false, false, true, false];
|
|
|
|
|
- this.chart1.destroy();
|
|
|
|
|
-
|
|
|
|
|
- this.logsService.getEnergyProducedByMonth().toPromise()
|
|
|
|
|
- .then((data: any) => {
|
|
|
|
|
- // Get all the keys(each meter name) of the returned promise
|
|
|
|
|
- this.metersKeys = Object.keys(data["1M"]);
|
|
|
|
|
-
|
|
|
|
|
- // Get all the values according to each index (meter)
|
|
|
|
|
- this.metersValues = Object.values(data["1M"]).map(sub => sub);
|
|
|
|
|
- let meterKeys2 = Object.keys(this.metersValues);
|
|
|
|
|
-
|
|
|
|
|
- // Re-Initialize Json object
|
|
|
|
|
- this.metersData = [];
|
|
|
|
|
-
|
|
|
|
|
- // Json object construction for passing its values to the chartjs datasets according to its requirements
|
|
|
|
|
- for (let prop in meterKeys2) {
|
|
|
|
|
- let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersKeys[prop];
|
|
|
|
|
- this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: this.metersValues[prop].map(obj => obj.total_energy_kWh).reverse()});
|
|
|
|
|
- this.barChartLabels = this.metersValues[prop].map(obj => formatDate(obj.dateMax, 'dd/MM','es-Es','-0600')).reverse();
|
|
|
|
|
|
|
+ switch (view){
|
|
|
|
|
+ case "day":
|
|
|
|
|
+ this.barChartLabels = this.metersValues[0]["data"].map(obj => formatDate(obj.dateMax, 'hh:mm:ss','es-Es','-0600')).reverse();
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'week':
|
|
|
|
|
+ this.barChartLabels = this.metersValues[0]["data"].map(obj => formatDate(obj.dateMax, 'EEEE dd','es-Es','-0600')).reverse();
|
|
|
|
|
+ break;
|
|
|
|
|
+ case "year":
|
|
|
|
|
+ this.barChartLabels = this.metersValues[0]["data"].map(obj => formatDate(obj.dateMax, 'MM/yyyy','es-Es','-0600')).reverse();
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ this.barChartLabels = this.metersValues[0]["data"].map(obj => formatDate(obj.dateMax, 'dd/MM','es-Es','-0600')).reverse();
|
|
|
}
|
|
}
|
|
|
- this.chart1.destroy();
|
|
|
|
|
- this.chart1 = undefined;
|
|
|
|
|
- // Chart draw
|
|
|
|
|
|
|
+
|
|
|
this.chart1 = new Chart('canvas', {
|
|
this.chart1 = new Chart('canvas', {
|
|
|
type: 'bar',
|
|
type: 'bar',
|
|
|
options: {
|
|
options: {
|
|
@@ -510,7 +315,7 @@ export class AssetsComponent implements OnInit {
|
|
|
return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
responsive: true,
|
|
responsive: true,
|
|
|
maintainAspectRatio: false,
|
|
maintainAspectRatio: false,
|
|
@@ -525,8 +330,7 @@ export class AssetsComponent implements OnInit {
|
|
|
},
|
|
},
|
|
|
data: {
|
|
data: {
|
|
|
labels: this.barChartLabels,
|
|
labels: this.barChartLabels,
|
|
|
- datasets:
|
|
|
|
|
- this.metersData,
|
|
|
|
|
|
|
+ datasets: this.metersData,
|
|
|
},
|
|
},
|
|
|
});
|
|
});
|
|
|
this.chartjs = true;
|
|
this.chartjs = true;
|
|
@@ -534,92 +338,8 @@ export class AssetsComponent implements OnInit {
|
|
|
|
|
|
|
|
setTimeout(()=>{
|
|
setTimeout(()=>{
|
|
|
Swal.close();
|
|
Swal.close();
|
|
|
- }, 2700)
|
|
|
|
|
|
|
+ }, 1200)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- onMeasureYear(measureDateBegin?:string, measureDateEnd?:string): void {
|
|
|
|
|
-
|
|
|
|
|
- Swal.fire({
|
|
|
|
|
- allowOutsideClick: false,
|
|
|
|
|
- type: 'info',
|
|
|
|
|
- text: 'Espere por favor...'
|
|
|
|
|
- });
|
|
|
|
|
- Swal.showLoading();
|
|
|
|
|
- this.view = "year";
|
|
|
|
|
- this.isActive = [false, false, false, true];
|
|
|
|
|
- this.chart1.destroy();
|
|
|
|
|
-
|
|
|
|
|
- this.http.get(`${environment.apiUrl}/logs/energyProduced/YTD`).toPromise()
|
|
|
|
|
- .then((data: any) => {
|
|
|
|
|
- // Get all the keys(each meter name) of the returned promise
|
|
|
|
|
- this.metersKeys = Object.keys(data["YTD"]);
|
|
|
|
|
-
|
|
|
|
|
- // Get all the values according to each index (meter)
|
|
|
|
|
- this.metersValues = Object.values(data["YTD"]).map(sub => sub);
|
|
|
|
|
- let meterKeys2 = Object.keys(this.metersValues);
|
|
|
|
|
-
|
|
|
|
|
- // Re-Initialize Json object
|
|
|
|
|
- this.metersData = [];
|
|
|
|
|
-
|
|
|
|
|
- // Json object construction for passing its values to the chartjs datasets according to its requirements
|
|
|
|
|
- for (let prop in meterKeys2) {
|
|
|
|
|
- let label = localStorage.getItem("email") == "inverlec@grupomerelec.com" ? `INVERLEC ${prop}` : this.metersKeys[prop];
|
|
|
|
|
- this.metersData.push({"label": label, backgroundColor: this.barChartColors[prop], data: this.metersValues[prop].map(obj => obj.total_energy_kWh).reverse()});
|
|
|
|
|
- this.barChartLabels = this.metersValues[prop].map(obj => formatDate(obj.dateMax, 'MMM','es-Es','-0600')).reverse();
|
|
|
|
|
- }
|
|
|
|
|
- this.chart1.destroy();
|
|
|
|
|
- this.chart1 = undefined;
|
|
|
|
|
- // Chart draw
|
|
|
|
|
- this.chart1 = new Chart('canvas', {
|
|
|
|
|
- type: 'bar',
|
|
|
|
|
- options: {
|
|
|
|
|
- title: {
|
|
|
|
|
- display: true,
|
|
|
|
|
- },
|
|
|
|
|
- tooltips: {
|
|
|
|
|
- mode: 'index',
|
|
|
|
|
- callbacks: {
|
|
|
|
|
- // Get the total of the energy produced in every point and show it in the hover tooltip
|
|
|
|
|
- label: function (tooltipItem, data) {
|
|
|
|
|
- var label = data.datasets[tooltipItem.datasetIndex].label || '';
|
|
|
|
|
- var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
|
|
|
|
|
- var total = 0;
|
|
|
|
|
-
|
|
|
|
|
- for (var i = 0; i < data.datasets.length; i++)
|
|
|
|
|
- total += +data.datasets[i].data[tooltipItem.index];
|
|
|
|
|
-
|
|
|
|
|
- if (tooltipItem.datasetIndex !== data.datasets.length - 1) {
|
|
|
|
|
- return label + " : " + value;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- return [label + " : " + value, "TOTAL : " + Math.round(total)];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- responsive: true,
|
|
|
|
|
- maintainAspectRatio: false,
|
|
|
|
|
- scales: {
|
|
|
|
|
- xAxes: [{
|
|
|
|
|
- stacked: true,
|
|
|
|
|
- }],
|
|
|
|
|
- yAxes: [{
|
|
|
|
|
- stacked: true
|
|
|
|
|
- }]
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- data: {
|
|
|
|
|
- labels: this.barChartLabels,
|
|
|
|
|
- datasets:
|
|
|
|
|
- this.metersData,
|
|
|
|
|
- },
|
|
|
|
|
- });
|
|
|
|
|
- this.chartjs = true;
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- setTimeout(()=>{
|
|
|
|
|
- Swal.close();
|
|
|
|
|
- }, 3200)
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|