/****************************************************************************
 * 최근 6개 인바디 데이터 조회
 ****************************************************************************/
function fn_selectListRecentUserPhysicalJson(){
    let formData = new FormData();
    $.ajax({
        url: encodeURI('/mobileuserphysical/selectRecentUserPhysicalList.do'),
        data: formData,
        dataType: "json",
        processData: false,
        contentType: false,
        type: 'POST',
        async: false,
        success: function(data){
            if('0'==data.msgCode){
                if(0<data.totalCount){
                    const labels = data.rows.map(item => item.writeDate);
                    const bmiValues = data.rows.map(item => item.bmi);
                    while (labels.length < 6) {
                        labels.push(''); // 빈 라벨 추가
                        bmiValues.push(null); // 빈 데이터 추가
                    }
                    fn_drawBmiChart(labels, bmiValues);
                    // 최대 및 최소 BMI 계산
                    const maxBmi = Math.max(...bmiValues.filter(value => value !== null));
                    const minBmi = Math.min(...bmiValues.filter(value => value !== null));

                    // 최고 및 최저 BMI 값을 표시
                    const bmiInfoDiv = document.querySelector('.bmi-info');
                    bmiInfoDiv.textContent = `최고 ${maxBmi} | 최저 ${minBmi}`;

                    //검색일자 인바디 데이터 조회
                    fn_UserPhysicalSearch();
                } else {
                    console.log("없음");
                    $('.exist_box').empty();
                    const innerHtml = '<div class="none_box" style="margin: 20px">' +
                                                '<p>측정된 기록이 없어요 😭</p>' +
                                                '<p>인바디 / BMI 측정은  내원시 요청하실 수 있어요</p>' +
                                             '</div>';
                    $('main').append(innerHtml)
                }
            } else if (data.msgCode == '-1') {
                modalEvent.warning("조회 오류", data.msgDesc);
            } else {
                modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
            }
        },
        error: function(xhr, status, error) {
            modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
        },
        beforeSend:function(){

        },
        complete:function(){

        }
    });
}
/****************************************************************************
 * 검색일자 인바디 데이터 조회
 ****************************************************************************/
function fn_selectListUserPhysicalJson(){
    let formData = new FormData();
    formData.append('physicalSearchDate',physicalSearchDate)
    $.ajax({
        url: encodeURI('/mobileuserphysical/selectUserPhysicalList.do'),
        data: formData,
        dataType: "json",
        processData: false,
        contentType: false,
        type: 'POST',
        async: false,
        success: function(data){
            const pastWrapper = $('.past_reservation');
            if('0'==data.msgCode){
                $('.bodyinfo_wrap').empty();
                if(0<data.totalCount){
                    data.rows.forEach((physicalData,index)=>{
                        const innerHtml =`<div class="bodyinfo_box">
                                                    <p class="date">${physicalData.writeDate}</p>
                                                    <ul>
                                                        <li>
                                                            <p class="label">키</p>
                                                            <p><span>${physicalData.height}</span> <span>cm</span></p>
                                                        </li>
                                                        <li>
                                                            <p class="label">몸무게</p>
                                                            <p><span>${physicalData.weight}</span> <span>kg</span></p>
                                                        </li>
                                                        <li>
                                                            <p class="label">BMI</p>
                                                            <p><span>${physicalData.bmi}</span> <span>kg/m2</span></p>
                                                        </li>
                                                    </ul>
                                                </div>`
                        $('.bodyinfo_wrap').append(innerHtml)
                    })

                }else{
                    const innerHtml = '<div class="none_box" style="margin: 20px">' +
                                                '<p>측정된 기록이 없어요 😭</p>' +
                                                '<p>인바디 / BMI 측정은  내원시 요청하실 수 있어요</p>' +
                                             '</div>';
                    $('.bodyinfo_wrap').append(innerHtml)
                }
            } else if (data.msgCode=='-1'){
                modalEvent.warning("조회 오류", data.msgDesc);
            }
            else{
                modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
            }
        },
        error : function(xhr, status, error) {
            modalEvent.danger("조회 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오.");
        },
        beforeSend:function(){

        },
        complete:function(){

        }
    });
}

/****************************************************************************
 * 검색하기
 ****************************************************************************/
function fn_UserPhysicalSearch(param){
    fn_selectListUserPhysicalJson();
}
// 차트를 그리는 함수
function fn_drawBmiChart(labels, bmiValues) {
    const ctx = document.getElementById('myChart').getContext('2d');

    const maxDataValue = Math.max(...bmiValues) * 1.5;
    const myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: labels,
            datasets: [{
                label: 'BMI',
                data: bmiValues,
                backgroundColor: '#00FF00',
                borderColor: '#00FF00',
                borderWidth: 1,
                barThickness: 10
            }]
        },
        options: {
            scales: {
                y: {
                    beginAtZero: true,
                    max: maxDataValue,
                    ticks: {
                        stepSize: 10,
                        color: '#ffffff'
                    },
                    grid: {
                        color: '#333333'
                    }
                },
                x: {
                    ticks: {
                        color: '#ffffff'
                    },
                    grid: {
                        color: '#333333'
                    }
                }
            },
            plugins: {
                legend: {
                    display: false
                },
                tooltip: {
                    enabled: true
                },
                datalabels: {
                    anchor: 'end',
                    align: 'top',
                    color: '#00FF00',
                    formatter: function (value) {
                        return value !== null ? value.toFixed(1) : '';
                    }
                }
            },
            animation: {
                duration: 1000
            }
        },
        plugins: [ChartDataLabels]
    });
}
/****************************************************************************
 * 페이지 init
 ****************************************************************************/
function fn_pageInit(){

    if(isMobile.Android()){
        // 안드로이드
        let value;
        let year;
        let month;

        $("#mmDatepicker").click(function(e){
            e.preventDefault();
            value = prompt("monthPicker");

            if(!value){
                // 오늘
                let toDate = new Date();
                year  = toDate.getFullYear();
                month = toDate.getMonth() + 1;
                if(month < 10) month = "0" + month;

            }else{
                let valueArr = value.split("-");
                year  = valueArr[0];
                month = valueArr[1];
                if(month < 10) month = "0" + month;
            }

            physicalSearchDate = year+"-"+month;
            $(this).val(physicalSearchDate);

            fn_selectListUserPhysicalJson();
        });

    }else if(isMobile.IOS()){
        // IOS
        let value; /**/
        let year;
        let month;

        $("#mmDatepicker").change(function(){
            value = $(this).val()
            if(!value){
                // 오늘
                let toDate = new Date();
                year  = toDate.getFullYear();
                month = toDate.getMonth() + 1;
                if(month < 10) month = "0" + month;
            }else{
                let valueArr = $(this).val().split("-");
                year  = valueArr[0];
                month = valueArr[1];
                if(month < 10) month = "0" + month;
            }

            physicalSearchDate = year+"-"+month;
            $(this).val(physicalSearchDate);

            fn_selectListUserPhysicalJson();
        });
    }

    if(physicalSearchDate){
        $("#mmDatepicker").val(physicalSearchDate)
    }else{
        // 오늘
        let toDate = new Date();
        let year  = toDate.getFullYear();
        let month = toDate.getMonth() + 1;
        if(month < 10) month = "0" + month;
        $("#mmDatepicker").val( year+'-'+month).trigger("change");

        physicalSearchDate = year+"-"+month;
    }
    //최근 인바디 데이터 조회
    fn_selectListRecentUserPhysicalJson();

}

/****************************************************************************
 * 페이지 event
 ****************************************************************************/
function fn_pageEvent(){

}

$(function(){
    // 페이지 init
    fn_pageInit();

    // 페이지 event
    fn_pageEvent();
});