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

편집 요약 없음
태그: 되돌려진 기여
편집 요약 없음
태그: 수동 되돌리기
 
117번째 줄: 117번째 줄:
     fetchMealInfo();
     fetchMealInfo();
     fetchScheduleInfo();
     fetchScheduleInfo();
});
$(document).ready(function() {
    var adScript = document.createElement('script');
    adScript.async = true;
    adScript.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6973291980284179';
    adScript.crossOrigin = 'anonymous';
    document.head.appendChild(adScript);
    var adHtml = '<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6973291980284179" data-ad-slot="3794388004" data-ad-format="auto" data-full-width-responsive="true"></ins>';
   
    // 예를 들어, 사이드바에 광고 삽입
    $('#mw-panel').prepend(adHtml);
    // 광고 로드
    (adsbygoogle = window.adsbygoogle || []).push({});
});
});

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