Данные динамической диаграммы - PullRequest
0 голосов
/ 27 сентября 2019

Я делаю вызов покоя и хочу заполнить pieChartData данными, полученными из этого вызова.Но я не могу этого сделать.Как я могу это сделать?

import { Component, OnInit} from '@angular/core';
import config from '../../config.json';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
  selector: 'app-analytics',
  templateUrl: './analytics.component.html',
  styleUrls: ['./analytics.component.css']
})
export class AnalyticsComponent  {
  public clickData;
  public dataExtracted=[];
  //public pieChartData=[0,0,0,0,0,0,0,0,0,0];
  private readonly CLICK_DATA_GET = config["SettingsInfo"]['clickDataFetchEndpoint'];
  public pieChartLabels:string[] = ['SC', 'CONF', 'ISS','KB','LOC','APP','PORTAL','UD','ANA','WATCH'];
  public pieChartData=this.dataExtracted;
  public pieChartType:string = 'pie';


  constructor(private httpClient: HttpClient) { 
     this.getClickData();
    //  console.log("Array "+this.dataExtracted);

  }
  getClickData()  {
    var pieChartData=[0,0,0,0,0,0,0,0,0,0];
    this.httpClient.get(this.CLICK_DATA_GET).subscribe(
        (data) => {
          this.clickData=data;
          console.log("DATA COMING "+JSON.stringify(this.clickData));
          for(var i=0;i<this.clickData.length;i++){
            var type=this.clickData[i].u_type;
            switch(type){
              case "SC": pieChartData[0]+=1; console.log(pieChartData[0]); break;
              case "CONF": pieChartData[1]+=1; console.log(pieChartData[1]); break;
              case "ISS": pieChartData[2]+=1; console.log(pieChartData[2]); break;
              case "KB": pieChartData[3]+=1; console.log(pieChartData[3]); break;
              case "LOC": pieChartData[4]+=1; console.log(pieChartData[4]); break;
              case "APP": pieChartData[5]+=1; console.log(pieChartData[5]); break;
              case "PORTAL": pieChartData[6]+=1; console.log(pieChartData[6]); break;
              case "UD": pieChartData[7]+=1; console.log(pieChartData[7]); break;
              case "ANA": pieChartData[8]+=1; console.log(pieChartData[8]); break;
              case "WATCH": pieChartData[9]+=1; console.log(pieChartData[9]); break;
              default:
                    console.log("type:" + type + " not handled");
                    break;
            }
          }
          console.log("ARRAY BEING RETURNED "+pieChartData);
          this.dataExtracted=pieChartData;
        }

    )




    // public pieChartData:number[] 
    // public pieChartType:string = 'pie';    
}}

// getClickDataCallback(data: object) {
//   this.setSettings(data);
//   this.settingsUpdate.emit();
// }

По сути, pieChartData пуст или заполнен нулями.Я хочу, чтобы pieChartData был заполнен локальным pieChartData (в функции getClickData ())

1 Ответ

0 голосов
/ 27 сентября 2019

Я думаю, что изменение

console.log("ARRAY BEING RETURNED "+pieChartData);
this.dataExtracted = pieChartData;

на

console.log("ARRAY BEING RETURNED "+pieChartData);
this.pieChartData = this.dataExtracted = pieChartData;

подойдет.

Когда вы назначаете this.pieChartData = this.dataExtracted, это не значит, что когда вы делаете this.dataExtracted = something else, this.pieChartData будет иметь одинаковое значение автоматически.Фактически он будет указывать на тот же старый объект, что и ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...