Obtener los datos
En este paso, aprenderás a obtener los datos del archivo data.json
y almacenarlos en las estructuras de datos necesarias.
- Abre el archivo
index.html
en tu editor de código.
- Localiza la sección
// TODO
en el código JavaScript.
- Crea dos objetos para almacenar los datos semanales y mensuales:
// TODO
let weekData = {
x: [],
y: []
};
let monthData = {
x: [],
y: []
};
- Implementa la función
mySetOption()
para actualizar las opciones del gráfico según los datos que se le pasen.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
myChart.setOption(option);
}
- Utiliza el método
axios.get()
para obtener los datos del archivo data.json
. La respuesta de la llamada a la API contendrá los datos en la propiedad res.data.data
.
axios.get("./data.json").then((res) => {
const data = res.data.data;
// Procesa los datos aquí
});
- Dentro de la función de devolución de llamada del método
then()
, itera a través del objeto data
y procesa los datos de duración de estudio de cada día. Calcula la duración total de estudio de cada semana y mes, y almacena los resultados en los objetos weekData
y monthData
respectivamente.
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);
}
- Después de procesar los datos, llama a la función
mySetOption()
y pasa el objeto weekData
para mostrar las estadísticas semanales por defecto.
mySetOption(weekData);
- El efecto del código después de este paso de procesamiento es el siguiente:
// 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);
});