편집 요약 없음 태그: 되돌려진 기여 |
편집 요약 없음 태그: 수동 되돌리기 |
||
117번째 줄: | 117번째 줄: | ||
fetchMealInfo(); | fetchMealInfo(); | ||
fetchScheduleInfo(); | fetchScheduleInfo(); | ||
}); | }); |
2024년 8월 4일 (일) 12:40 기준 최신판
$(document).ready(function() {
// 나이스 API URL 설정
var mealApiUrl = "https://open.neis.go.kr/hub/mealServiceDietInfo";
var scheduleApiUrl = "https://open.neis.go.kr/hub/SchoolSchedule";
var apiKey = "23d1d00bc564408bab2a481410550ea7"; // 나이스 API 키
// 한국 시간(KST) 기준으로 오늘 날짜 계산
var today = new Date();
var kstOffset = 9 * 60; // KST는 UTC+9
var kstTime = new Date(today.getTime() + (kstOffset * 60 * 1000));
var formattedToday = kstTime.toISOString().split('T')[0].replace(/-/g, '');
// 캐싱을 위한 함수
function getCachedData(key) {
var cached = localStorage.getItem(key);
if (cached) {
return JSON.parse(cached);
}
return null;
}
function setCachedData(key, data) {
localStorage.setItem(key, JSON.stringify(data));
}
// 급식 정보 API 호출 함수
function fetchMealInfo() {
var cacheKey = 'mealInfo_' + formattedToday;
var cachedData = getCachedData(cacheKey);
if (cachedData) {
renderMealInfo(cachedData);
} else {
$.getJSON(mealApiUrl, {
KEY: apiKey,
ATPT_OFCDC_SC_CODE: "P10", // 교육청 코드
SD_SCHUL_CODE: "8321079", // 학교 코드
MLSV_YMD: formattedToday,
Type: "json"
}, function(data) {
if (data.mealServiceDietInfo && data.mealServiceDietInfo[1] && data.mealServiceDietInfo[1].row) {
var meals = data.mealServiceDietInfo[1].row;
setCachedData(cacheKey, meals);
renderMealInfo(meals);
} else {
$('#meal-info').html('<p>오늘의 급식 정보가 없습니다.</p>');
}
});
}
}
// 급식 정보 렌더링 함수
function renderMealInfo(meals) {
var mealContent = '';
for (var i = 0; i < meals.length; i++) {
mealContent += '<h3>' + meals[i].MMEAL_SC_NM + '</h3>';
mealContent += '<p>' + meals[i].DDISH_NM.split('<br/>').join('<br/>') + '</p>';
mealContent += '<p>칼로리: ' + meals[i].CAL_INFO + '</p>';
}
$('#meal-info').html(mealContent);
}
// 학사일정 정보 API 호출 함수
function fetchScheduleInfo() {
var cacheKey = 'scheduleInfo_' + formattedToday;
var cachedData = getCachedData(cacheKey);
if (cachedData) {
renderScheduleInfo(cachedData);
} else {
$.getJSON(scheduleApiUrl, {
KEY: apiKey,
ATPT_OFCDC_SC_CODE: "P10", // 교육청 코드
SD_SCHUL_CODE: "8321079", // 학교 코드
AA_YMD: formattedToday,
Type: "json"
}, function(data) {
if (data.SchoolSchedule && data.SchoolSchedule[1] && data.SchoolSchedule[1].row) {
var schedules = data.SchoolSchedule[1].row;
setCachedData(cacheKey, schedules);
renderScheduleInfo(schedules);
} else {
$('#schedule-info').html('<p>오늘의 학사일정 정보가 없습니다.</p>');
}
});
}
}
// 학사일정 정보 렌더링 함수
function renderScheduleInfo(schedules) {
var scheduleContent = '';
for (var i = 0; i < schedules.length; i++) {
scheduleContent += '<h3>' + schedules[i].EVENT_NM + '</h3>';
scheduleContent += '<p>' + schedules[i].EVENT_CNTNT + '</p>';
}
$('#schedule-info').html(scheduleContent);
}
// 특정 섹션이 보일 때 API 호출 트리거
$(window).on('scroll', function() {
var mealInfoTop = $('#meal-info').offset().top;
var scheduleInfoTop = $('#schedule-info').offset().top;
var windowBottom = $(this).scrollTop() + $(this).height();
if (windowBottom >= mealInfoTop && !$('#meal-info').data('loaded')) {
$('#meal-info').data('loaded', true);
fetchMealInfo();
}
if (windowBottom >= scheduleInfoTop && !$('#schedule-info').data('loaded')) {
$('#schedule-info').data('loaded', true);
fetchScheduleInfo();
}
});
// 초기 호출 (스크롤 이벤트가 발생하지 않아도 로드하도록)
fetchMealInfo();
fetchScheduleInfo();
});