import {Component, ViewEncapsulation} from '@angular/core'; import {ApiService} from '../api.service'; import { ChartsConfigService } from './chartConfigs.service'; @Component({ selector: 'gvp', encapsulation: ViewEncapsulation.None, styles: [require('./gvp.scss')], template: require('./gvp.html') }) export class Gvp { private CHANGE_CHART_TIME: number = 4000; private CHANGE_CHART_MAXUMUM: number = 12; DistrictStatistics: Object[] = []; mapPoint: Object[] = []; OrganizationStatistics: Object[] = []; DistrictWeek: Array = []; DistrictWeekArray: Array = []; DistrictKiev: Array = []; DistrictTmp: Object[]; public chartState: number = 2; ChartGVP: Object; ChatrTmp: Object; constructor(private _apiService: ApiService, private _chartsConfigService: ChartsConfigService) { for (let i = 0; i < 10; i++) { this.DistrictWeekArray.push(this.DistrictWeek); this.DistrictWeekArray[i] = []; } for (let i = 0; i < 3; i++) { this.DistrictKiev.push( { districtName: 'Загально по Киеву', buildingsCount: 0 } ); } setInterval(() => { this.changeChart(); }, this.CHANGE_CHART_TIME); } changeChart() { switch (this.chartState) { case 1: this.DistrictTmp = this.DistrictWeekArray[0]; break; case 2: this.DistrictTmp = this.DistrictWeekArray[1]; break; case 3: this.DistrictTmp = this.DistrictWeekArray[2]; break; case 4: this.DistrictTmp = this.DistrictWeekArray[3]; break; case 5: this.DistrictTmp = this.DistrictWeekArray[4]; break; case 6: this.DistrictTmp = this.DistrictWeekArray[5]; break; case 7: this.DistrictTmp = this.DistrictWeekArray[6]; break; case 8: this.DistrictTmp = this.DistrictWeekArray[7]; break; case 9: this.DistrictTmp = this.DistrictWeekArray[8]; break; case 10: this.DistrictTmp = this.DistrictWeekArray[9]; break; case 11: this.DistrictTmp = this.DistrictKiev; break; } this.chartState++; this.chartState == this.CHANGE_CHART_MAXUMUM ? this.chartState = 1 : false; this.ChartGVP = this._chartsConfigService.getChartConfig(this.DistrictTmp); } ngOnInit() { this._apiService.getGvpPointStates().then(data => { data.forEach(item => { item.state != 3 ? this.mapPoint.push(item) : false; }); }); this._apiService.getGvpDistrictStatistics().then(data => { data.forEach(item => { this.DistrictWeekArray[item.districtId - 1][item.state - 1] = item; switch (item.state) { case 1: this.DistrictKiev[0].buildingsCount += item.buildingsCount; break; case 2: this.DistrictKiev[1].buildingsCount += item.buildingsCount; break; case 3: this.DistrictKiev[2].buildingsCount += item.buildingsCount; break; } }); }) .then(() => { this.DistrictTmp = this.DistrictWeekArray[0]; this.ChartGVP = this._chartsConfigService.getChartConfig(this.DistrictTmp); }); this._apiService.getGvpOrganizationStatistics().then(data => { this.OrganizationStatistics = data; }); } }