미디어위키:Common.js: 두 판 사이의 차이

새 문서: →‎이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다.: $(document).ready(function() { // 나이스 API URL 설정 var apiUrl = "https://open.neis.go.kr/hub/mealServiceDietInfo"; var apiKey = "23d1d00bc564408bab2a481410550ea7"; // 여기에 나이스 API 키를 입력하세요 var today = new Date().toISOString().split('T')[0].replace(/-/g, ''); // API 호출 $.getJSON(apiUrl, { KEY: apiKey, ATPT_OFC...
 
편집 요약 없음
태그: 수동 되돌리기
 
(같은 사용자의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
$(document).ready(function() {
$(document).ready(function() {
     // 나이스 API URL 설정
     // 나이스 API URL 설정
     var apiUrl = "https://open.neis.go.kr/hub/mealServiceDietInfo";
     var mealApiUrl = "https://open.neis.go.kr/hub/mealServiceDietInfo";
     var apiKey = "23d1d00bc564408bab2a481410550ea7";  // 여기에 나이스 API 키를 입력하세요
    var scheduleApiUrl = "https://open.neis.go.kr/hub/SchoolSchedule";
    var today = new Date().toISOString().split('T')[0].replace(/-/g, '');
     var apiKey = "23d1d00bc564408bab2a481410550ea7";  // 나이스 API


     // API 호출
     // 한국 시간(KST) 기준으로 오늘 날짜 계산
     $.getJSON(apiUrl, {
     var today = new Date();
        KEY: apiKey,
    var kstOffset = 9 * 60; // KST는 UTC+9
        ATPT_OFCDC_SC_CODE: "P10",  // 교육청 코드
    var kstTime = new Date(today.getTime() + (kstOffset * 60 * 1000));
        SD_SCHUL_CODE: "8320090",  // 학교 코드
    var formattedToday = kstTime.toISOString().split('T')[0].replace(/-/g, '');
        MLSV_YMD: today,
        Type: "json"
    }, function(data) {
        if (data.mealServiceDietInfo && data.mealServiceDietInfo[1] && data.mealServiceDietInfo[1].row) {
            var meals = data.mealServiceDietInfo[1].row;
            var mealContent = '';


            // 급식 정보 HTML 생성
    // 캐싱을 위한 함수
            for (var i = 0; i < meals.length; i++) {
    function getCachedData(key) {
                mealContent += '<h3>' + meals[i].MMEAL_SC_NM + '</h3>';
        var cached = localStorage.getItem(key);
                mealContent += '<p>' + meals[i].DDISH_NM.replace(/<br\/>/g, ', ') + '</p>';
        if (cached) {
            }
            return JSON.parse(cached);
        }
        return null;
    }


            // 대문 페이지의 특정 요소에 급식 정보 삽입
    function setCachedData(key, data) {
            $('#main-page-element').html(mealContent);
        localStorage.setItem(key, JSON.stringify(data));
    }
 
    // 급식 정보 API 호출 함수
    function fetchMealInfo() {
        var cacheKey = 'mealInfo_' + formattedToday;
        var cachedData = getCachedData(cacheKey);
 
        if (cachedData) {
            renderMealInfo(cachedData);
         } else {
         } else {
             $('#main-page-element').html('<p>오늘의 급식 정보가 없습니다.</p>');
             $.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();
});
});

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();
});