데이터 가져오기
이 단계에서는 data.json 파일에서 데이터를 가져와 필요한 데이터 구조에 저장하는 방법을 배웁니다.
- 코드 편집기에서
index.html 파일을 엽니다.
- JavaScript 코드에서
// TODO 섹션을 찾습니다.
- 주간 및 월간 데이터를 저장할 두 개의 객체를 생성합니다:
// TODO
let weekData = {
x: [],
y: []
};
let monthData = {
x: [],
y: []
};
- 차트에 전달된 데이터를 기반으로 차트의 옵션을 업데이트하는
mySetOption() 함수를 구현합니다.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
myChart.setOption(option);
}
axios.get() 메서드를 사용하여 data.json 파일에서 데이터를 가져옵니다. API 호출의 응답에는 res.data.data 속성에 데이터가 포함됩니다.
axios.get("./data.json").then((res) => {
const data = res.data.data;
// Process the data here
});
then() 메서드의 콜백 함수 내부에서 data 객체를 반복하고 각 날짜에 대한 학습 시간 데이터를 처리합니다. 각 주 및 월의 총 학습 시간을 계산하고 결과를 각각 weekData 및 monthData 객체에 저장합니다.
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 객체를 전달하여 기본적으로 주간 통계를 표시합니다.
mySetOption(weekData);
- 이 단계의 코드 처리 후 효과는 다음과 같습니다:
// 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);
});