Obtendo os Dados
Nesta etapa, você aprenderá como obter os dados do arquivo data.json e armazená-los nas estruturas de dados necessárias.
- Abra o arquivo
index.html em seu editor de código.
- Localize a seção
// TODO no código JavaScript.
- Crie dois objetos para armazenar os dados semanais e mensais:
// TODO
let weekData = {
x: [],
y: []
};
let monthData = {
x: [],
y: []
};
- Implemente a função
mySetOption() para atualizar as opções do gráfico com base nos dados passados para ela.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
myChart.setOption(option);
}
- Use o método
axios.get() para obter os dados do arquivo data.json. A resposta da chamada da API conterá os dados na propriedade res.data.data.
axios.get("./data.json").then((res) => {
const data = res.data.data;
// Process the data here
});
- Dentro da função de callback do método
then(), itere sobre o objeto data e processe os dados de duração do estudo para cada dia. Calcule a duração total do estudo para cada semana e mês e armazene os resultados nos objetos weekData e 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);
}
- Após processar os dados, chame a função
mySetOption() e passe o objeto weekData para exibir as estatísticas semanais por padrão.
mySetOption(weekData);
- O efeito do código após esta etapa de processamento é o seguinte:
// 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);
});