Skip to content
Permalink
bf13c98edf
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
220 lines (207 sloc) 7.98 KB
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { GeneratorService } from '../services/generator.service';
import { DataService } from '../services/data.service';
import { VisualizeService } from '../services/visualize.service';
import { Router } from '@angular/router';
import { Chart } from 'chart.js';
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import 'rxjs/add/operator/map';
import { $ } from 'protractor';
import * as moment from 'moment';
import { MatDatepickerModule, MatDatepicker } from '@angular/material/datepicker';
@Component({
selector: 'app-visualize-one',
templateUrl: './visualize-one.component.html',
styleUrls: ['./visualize-one.component.css']
})
export class VisualizeOneComponent implements OnInit {
public generators$: Object;
public chart$: Object;
public genName$: any = null;
public dataType$: any = null;
public dataSig$: any = null;
public unit$: any = null;
public function$: any = null;
public startTime$: any = null;
public endTime$: any = null;
public dataNames$;
public laymanDataVal$: any = null;
public chart: any = null;
public signal$ = false;
events: string[] = [];
@ViewChild('time_span') timeSpan: ElementRef;
@ViewChild('start_time') startTime: ElementRef;
@ViewChild('end_time') endTime: ElementRef;
constructor(public data: DataService, public graphData: VisualizeService, public genData: GeneratorService,
private router: Router, private http: HttpClient) { }
resetAndRemakeChart() {
const genVal = localStorage.getItem('gen_id');
const genCount = 1;
this.signal$ = false;
const funcVals = Array.prototype.slice.call(document.querySelectorAll('#func_select option:checked'), 0).map(function (v, i, a) {
return v.value;
});
let funcVal = '';
if (funcVals[0] !== '') {
funcVal = funcVals[0] + '';
} else {
funcVal = 'invalid';
this.signal$ = true;
}
const dataType = localStorage.getItem('data_type');
let dataVal;
if (dataType === null) {
const dataVals = Array.prototype.slice.call(document.querySelectorAll('#data_select option:checked'), 0).map(function (v, i, a) {
return v.value;
});
if (dataVals[0] !== null) {
this.laymanDataVal$ = dataVal = dataVals[0] + '';
dataVal = this.data.convertNames(dataVal, 'metric');
} else {
dataVal = 'invalid';
this.signal$ = true;
}
} else {
dataVal = dataType;
}
const startTime = this.startTime.nativeElement.value;
const endTime = this.endTime.nativeElement.value;
let timeStart;
let timeEnd;
if (startTime === '') {
timeStart = 'invalid';
this.signal$ = true;
} else if (endTime === '') {
timeEnd = 'invalid';
this.signal$ = true;
}
const startArray = startTime.split('-');
const endArray = endTime.split('-');
let startNumArray;
let endNumArray;
if (startArray.length === 3 && endArray.length === 3) {
startNumArray = [parseInt(startArray[0], 10), parseInt(startArray[1], 10), parseInt(startArray[2], 10)];
endNumArray = [parseInt(endArray[0], 10), parseInt(endArray[1], 10), parseInt(endArray[2], 10)];
if (startNumArray[0] === endNumArray[0]) { // if years are equal
if (startNumArray[1] === endNumArray[1]) { // if months are equal
if (startNumArray[2] <= endNumArray[2]) { // if start days are less than or equal
timeStart = startArray[0] + '/' + startArray[1] + '/' + startArray[2] + '-00:00:00';
timeEnd = endArray[0] + '/' + endArray[1] + '/' + endArray[2] + '-23:59:59';
} else {
timeStart = 'invalid';
this.signal$ = true;
}
} else if (startNumArray[1] < endNumArray[1]) { // if start month is less
timeStart = startArray[0] + '/' + startArray[1] + '/' + startArray[2];
timeEnd = endArray[0] + '/' + endArray[1] + '/' + endArray[2];
} else {
timeStart = 'invalid';
this.signal$ = true;
}
} else if (startNumArray[0] < endNumArray[0]) { // if start year is less
timeStart = startArray[0] + '/' + startArray[1] + '/' + startArray[2];
timeEnd = endArray[0] + '/' + endArray[1] + '/' + endArray[2];
} else {
timeStart = 'invalid';
this.signal$ = true;
}
} else {
timeStart = 'invalid';
this.signal$ = true;
}
if (this.signal$ === false) {
const jsonToken = localStorage.getItem('auth_token');
const labels = [];
const data = [];
try {
// create chart based on user input
this.graphData.getDataForVis(jsonToken, timeStart, timeEnd, funcVal, localStorage.getItem('gen_id'), dataVal)
.subscribe((graphData) => {
this.chart$ = graphData;
let sig;
let count = 0;
let realCount;
for (let n = 0; n < (Object.keys(this.chart$['outputs'][0]['dps']).length); n++) {
labels.push(this.chart$['outputs'][0]['dps'][n][0]);
if (n === 0) {
sig = this.chart$['outputs'][0]['dps'][n][0];
count = 1;
} else if (sig === this.chart$['outputs'][0]['dps'][n][0]) {
realCount = count;
} else {
count++;
}
}
for (let c = 0; c < genCount; c++) {
const genData = [];
for (let n = 0; n < (Object.keys(this.chart$['outputs'][0]['dps']).length); n++) {
genData.push(this.chart$['outputs'][0]['dps'][n][c + 1]);
}
data.push(genData);
}
this.chart.destroy();
this.chart = this.graphData.createChart(labels, data, [localStorage.getItem('gen_name')]);
this.unit$ = this.data.getUnits(dataVal);
this.startTime$ = startArray[1] + '/' + startArray[2] + '/' + startArray[0];
this.endTime$ = endArray[1] + '/' + endArray[2] + '/' + endArray[0];
this.function$ = funcVal;
});
} catch (err) {
return err;
}
} else if (this.signal$ === true) {
console.log('invalid entry');
}
}
ngOnInit() {
this.dataNames$ = this.data.getAllNames('layman');
const jsonToken = localStorage.getItem('auth_token');
try {
this.genData.getGenerators(jsonToken).subscribe((genData) => {
this.generators$ = genData;
return this.generators$;
});
} catch (err) {
return err;
}
const labels = [];
const data = [];
try {
// create example chart
let dataType = localStorage.getItem('data_type');
if (dataType === null) {
this.dataSig$ = true;
dataType = 'oil.temp';
} else {
this.dataSig$ = false;
this.dataType$ = this.data.convertNames(dataType, 'layman');
}
this.graphData.getDataForVis(jsonToken, '2019/03/13', '2019/03/14', 'sum', localStorage.getItem('gen_id'), dataType)
.subscribe((graphData) => {
this.chart$ = graphData;
let count;
for (let n = 0; n < (Object.keys(this.chart$['outputs'][0]['dps']).length); n++) {
labels.push(this.chart$['outputs'][0]['dps'][n][0]);
count = n;
}
for (let c = 0; c < 1; c++) {
const genData = [];
for (let n = 0; n < (Object.keys(this.chart$['outputs'][0]['dps']).length); n++) {
genData.push(this.chart$['outputs'][0]['dps'][n][c + 1]);
}
data.push(genData);
}
this.laymanDataVal$ = 'Example Lube Oil Temperature';
this.chart = this.graphData.createChart(labels, data, [localStorage.getItem('gen_name')]);
this.unit$ = this.data.getUnits('oil.temp');
this.startTime$ = '03/13/2019';
this.endTime$ = '03/14/2019';
this.function$ = 'sum';
this.genName$ = localStorage.getItem('gen_name');
});
} catch (err) {
return err;
}
}
}