Daten abrufen
In diesem Schritt wirst du lernen, wie du die Daten aus der data.json
-Datei abrufst und in den erforderlichen Datenstrukturen speicherst.
- Öffne die
index.html
-Datei in deinem Code-Editor.
- Locate the
// TODO
section in the JavaScript code.
- Erstelle zwei Objekte, um die wöchentlichen und monatlichen Daten zu speichern:
// TODO
let weekData = {
x: [],
y: []
};
let monthData = {
x: [],
y: []
};
- Implementiere die
mySetOption()
-Funktion, um die Optionen des Diagramms basierend auf den an ihr übergebenen Daten zu aktualisieren.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
myChart.setOption(option);
}
- Verwende die
axios.get()
-Methode, um die Daten aus der data.json
-Datei abzurufen. Die Antwort auf den API-Aufruf wird die Daten in der res.data.data
-Eigenschaft enthalten.
axios.get("./data.json").then((res) => {
const data = res.data.data;
// Verarbeite die Daten hier
});
- Innerhalb der Callback-Funktion der
then()
-Methode durchlaufe das data
-Objekt und verarbeite die Lernzeitdaten für jeden Tag. Berechne die Gesamtlernzeit für jede Woche und jeden Monat und speichere die Ergebnisse in den weekData
- und monthData
-Objekten respective.
for (const key in data) {
let weekCount = (monthCount = 0),
weekNum = 1;
for (let i = 0; i < data[key].length; i++) {
weekCount += data[key][i];
monthCount += data[key][i];
if (
(i + 1) % 7 === 0 ||
(data[key].length - i <= 7 && i === data[key].length - 1)
) {
weekData.x.push(`Week ${weekNum++} (${key})`);
weekData.y.push(weekCount);
weekCount = 0;
}
}
monthData.x.push(key);
monthData.y.push(monthCount);
}
- Nachdem die Daten verarbeitet wurden, rufe die
mySetOption()
-Funktion auf und übergebe das weekData
-Objekt, um die wöchentlichen Statistiken standardmäßig anzuzeigen.
mySetOption(weekData);
- Der Effekt des Codes nach diesem Verarbeitungs-Schritt ist wie folgt:
// TODO
let weekData = {
x: [],
y: []
},
monthData = {
x: [],
y: []
};
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
// reset
myChart.setOption(option);
}
axios.get("./data.json").then((res) => {
const data = res.data.data;
for (const key in data) {
let weekCount = (monthCount = 0),
weekNum = 1;
for (let i = 0; i < data[key].length; i++) {
weekCount += data[key][i];
monthCount += data[key][i];
if (
(i + 1) % 7 === 0 ||
(data[key].length - i <= 7 && i === data[key].length - 1)
) {
weekData.x.push(`Week ${weekNum++} (${key})`);
weekData.y.push(weekCount);
weekCount = 0;
}
}
monthData.x.push(key);
monthData.y.push(monthCount);
}
mySetOption(weekData);
});