2016-08-30 4 views
1

ich amCharts in meiner AngularJS Anwendung verwenden und das ist die JSON-Daten, die ich zurück:Wie verschachtelte JSON-Daten in amCharts Zugriff

{ 
total: 2, 
tools: [ 
{ 
id: "57c5a75d57d92f742dc96bf2", 
empId: "1", 
empName: "ABC", 
empType: { 
typeId: 3, 
typeName: "Contract", 
hours: 45, 
} 
}, 
{ 
id: "57c5a75d57d92f742dc96bf2", 
empId: "2", 
empName: "DEF", 
empType: { 
typeId: 2, 
typeName: "Full-Time", 
hours: 40, 
} 
}, 


] 
} 

-Code in meinem Controller:

const writeemp = data => { 
     const { 
      total, 
      employees, 
     } = data; 

     empChart.dataProvider = employees; 
     empChart.write('emp'); 
     empChart.validateData(); 
    }; 

    AmCharts.handleLoad(); 

    var configChart = function() { 


     empChart = new AmCharts.AmSerialChart(); 
     empChart.categoryField = "empId"; 
     empChart.labelRotation = 90; 

     var yAxis = new AmCharts.ValueAxis(); 
     yAxis.position = "left"; 
     empChart.addValueAxis(yAxis); 


     empBarGraph = new AmCharts.AmGraph(); 
     empBarGraph.valueField = "";//This to be the value "TypeName" in "empType" from the Json Data 
     empBarGraph.type = "column"; 
     empBarGraph.fillAlphas = 1; 
     empBarGraph.lineColor = "#f0ab00"; 
     empBarGraph.valueAxis = yAxis; 
     empChart.addGraph(empBarGraph); 
     empChart.write('empChart'); 


     $http.get(hostNameService.getHostName()+"/dashboard/employees") 
      .then(response => writeemp(response.data)); 
    } 

Could jemand ließ mich wissen, wie ich auf verschachtelte Json-Daten in Amcharts zugreifen konnte. Ich möchte eines der Felder als mein ValueField im Diagramm erstellen.

Antwort

1

AmCharts unterstützt keine verschachtelten JSON-Sets. Sie müssen Ihre Daten als abgeflachtes Array von Objekten restrukturieren, die Ihre WerteField (s) und categoryField enthalten. In Ihrem Fall:

[ 
    { 
    "empId": 1, 
    "typeName": "Contract" 
    }, 
// ... 
] 

Beachten Sie, dass Diagramme nur numerische Werte für die Werteachse unterstützen kann, so „Typname“ ist kein geeignetes Valuefield.

+0

Danke für Ihre Hilfe. Ich habe in diesem Fall eine benutzerdefinierte Datenstruktur erstellt. Ja, ich verstehe, dass wir Zahlen nur als Wertfeld in den Charts verwenden können. – Valla