این کد من ارور میده

function load_doctor_data() {
    const details = [{
            label: "مرکز درمانی",
            value: getCookie("medicalCenter_name")
        },
        {
            label: "اولین تاریخ کاری",
            value: "۱۴۰۳/۰۹/۲۹"
        },
        {
            label: "اولین زمان کاری",
            value: "۱۰:۰۰"
        },
    ];

    // گرفتن عنصر اصلی
    const sidebar = document.getElementById("app-calendar-sidebar");

    // اضافه کردن آیتم‌ها به DOM
    details.forEach(detail => {
        const item = document.createElement("div");
        item.className = "detail-item";

        const label = document.createElement("div");
        label.className = "detail-label";
        label.textContent = detail.label;

        const value = document.createElement("div");
        value.className = "detail-value";
        value.textContent = detail.value;

        // اتصال بخش‌ها به آیتم
        item.appendChild(label);
        item.appendChild(value);
        // اتصال آیتم به المان اصلی
        sidebar.appendChild(item);
    });
}

function go_to_perv_page() {
    window.location.href = 'http://localhost/profile-doctor-self-calendar.html';
}

function add_btn_add_visit() {
    // پیدا کردن تمام المنت‌ها با کلاس fc-toolbar-chunk
    const toolbarChunks = document.querySelectorAll('.fc-toolbar-chunk')[2];
    toolbarChunks.insertAdjacentHTML('beforeend', `
            <button type="button" title="برگشت به صفحه قبلی" class="fc-addVisit-button fc-button fc-button-primary" onclick="go_to_perv_page()">
                بازگشت
            </button>
        `);
}

function getCookie(name) {
    const nameEQ = name + "=";
    const ca = document.cookie.split(';');
    for (let i = 0; i < ca.length; i++) {
        let c = ca[i];
        while (c.charAt(0) === ' ') c = c.substring(1);
        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function setCookie(name, value, days, isSecure = false, isHttpOnly = false, sameSite = 'Lax') {
    let cookieString = `${name}=${value}; max-age=${days * 24 * 60 * 60}`;

    if (isSecure) {
        cookieString += '; Secure';
    }
    if (isHttpOnly) {
        cookieString += '; HttpOnly';
    }
    if (sameSite) {
        cookieString += `; SameSite=${sameSite}`;
    }

    document.cookie = cookieString;
}

function addEventToDate(date, title, type) {
    // پیدا کردن خانه بر اساس تاریخ
    const cell = document.querySelector(`td[data-date="${date}"] .fc-daygrid-day-events`);

    cell.innerHTML = `<div class="fc-daygrid-day-events"><div class="fc-daygrid-event-harness" style="margin-top: 0px;"><a tabindex="0" class="fc-event fc-event-draggable fc-event-resizable fc-event-start fc-event-end fc-event-future fc-daygrid-event fc-daygrid-block-event fc-h-event fc-event-${type}"><div class="fc-event-main"><div class="fc-event-main-frame"><div class="fc-event-title-container"><div class="fc-event-title fc-sticky">${title}</div></div></div></div><div class="fc-event-resizer fc-event-resizer-start"></div><div class="fc-event-resizer fc-event-resizer-end"></div></a></div><div class="fc-daygrid-day-bottom" style="margin-top: 0px;"></div></div>`

}

function check_hour_change_text(hour1, hour2) {
    let [hours1, minutes1] = hour1.split(":").map(Number);
    let [hours2, minutes2] = hour2.split(":").map(Number);

    let date1 = new Date(2023, 0, 1, hours1, minutes1); // سال و ماه مهم نیست
    if (hours2 == 0) {
        var date2 = new Date(2023, 0, 2, hours2, minutes2);
    } else {
        var date2 = new Date(2023, 0, 1, hours2, minutes2);
    }

    // محاسبه اختلاف زمان
    let differenceInMilliseconds = date1 - date2; // اختلاف به میلی ثانیه

    // تبدیل اختلاف زمان به ساعت و دقیقه
    let differenceHours = Math.floor(differenceInMilliseconds / (1000 * 60 * 60));
    // let differenceMinutes = Math.floor((differenceInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));
    return differenceHours;
}

function check_hour_change_number(hour1, hour2) {
    let [hours1, minutes1] = hour1.split(":").map(Number);
    let [hours2, minutes2] = hour2.split(":").map(Number);

    let date1 = new Date(2023, 0, 1, hours1, minutes1); // سال و ماه مهم نیست
    if (hours2 == 0) {
        var date2 = new Date(2023, 0, 2, hours2, minutes2);
    } else {
        var date2 = new Date(2023, 0, 1, hours2, minutes2);
    }

    // محاسبه اختلاف زمان
    let differenceInMilliseconds = date1 - date2; // اختلاف به میلی ثانیه

    // تبدیل اختلاف زمان به ساعت و دقیقه
    let differenceHours = Math.floor(differenceInMilliseconds / (1000 * 60 * 60));
    // let differenceMinutes = Math.floor((differenceInMilliseconds % (1000 * 60 * 60)) / (1000 * 60));
    return differenceHours;
}

function addReservation(date, start, end) {
    if (!reservations[date]) {
        reservations[date] = [];
    }
    reservations[date].push({
        start,
        end
    });
}

// تابع برای پیدا کردن زمان‌های خالی
function findAvailableTimes(date) {
    if (!reservations[date] || reservations[date].length === 0) {
        return [{
            start: START_HOUR,
            end: END_HOUR
        }];
    }

    // مرتب‌سازی زمان‌های رزرو شده بر اساس زمان شروع
    const reservedTimes = reservations[date].sort((a, b) => a.start - b.start);
    let availableTimes = [];
    let currentStart = START_HOUR;

    // بررسی هر زمان رزرو شده
    for (let reservation of reservedTimes) {
        if (reservation.start > currentStart) {
            availableTimes.push({
                start: currentStart,
                end: reservation.start
            });
        }
        currentStart = Math.max(currentStart, reservation.end);
    }

    // بررسی زمان باقی مانده تا پایان بازه
    if (currentStart < END_HOUR) {
        availableTimes.push({
            start: currentStart,
            end: END_HOUR
        });
    }

    return availableTimes;
}

function data_addEventToDate() {
    data_work_time.forEach(item => {
        let [hours1, minutes1] = item.startTime.split(":").map(Number);
        let [hours2, minutes2] = item.endTime.split(":").map(Number);
        if (hours2 === 0){
            hours2 = 24;
        }
        addReservation(item.date, hours1, hours2);
        availableTimes = findAvailableTimes(item.date);
        // console.log(availableTimes.length);
        // console.log(availableTimes[0].start,availableTimes[0].end);
        // console.log(time_diff_exist);
        // console.log("##############");
        if (availableTimes.length != 0){
            addEventToDate(item.date, `${availableTimes[0].end - availableTimes[0].start} ساعت باقیست`, "info");
        } else {
            addEventToDate(item.date, `اتمام تایم کاری`, "warning");
        }
    });
}

function highlightPastCells_DataSet() {
    const today = new Date(); // تاریخ امروز
    const todayString = today.toISOString().split('T')[0]; // تبدیل به فرمت YYYY-MM-DD

    // پیدا کردن تمام خانه‌های td
    const cells = document.querySelectorAll('td[data-date]');

    cells.forEach(cell => {
        const cellDate = cell.getAttribute('data-date'); // گرفتن تاریخ از data-date
        if (cellDate < todayString) { // مقایسه تاریخ
            cell.classList.add('past'); // اضافه کردن کلاس برای تغییر رنگ
        }
    });

    const url = './json-custome/profile-doctor-medical-calendar-data.json';
    json_file_load(url)
        .then(data => {
            data_work_time = data;
            data_addEventToDate();
        })
        .catch(error => {
            console.error('Error loading data:', error);
        });
    // حلقه برای پردازش داده‌ها


}

function add_html_notif_login() {
    const bodyElement = document.body;
    bodyElement.insertAdjacentHTML('beforeend', `
    <div aria-atomic="true" aria-live="assertive" class="bs-toast toast toast-ex animate__animated my-2" data-bs-delay="2000" role="alert">
        <div class="toast-header">
            <i class="ti ti-bell ti-xs me-2"></i>
            <div class="me-auto fw-medium">پیام سیستمی</div>
            <button aria-label="بستن" class="btn-close" data-bs-dismiss="toast" type="button"></button>
        </div>
        <div class="toast-body">ورود خودکار با موفقیت به سیستم انجام شد</div>
    </div>
    `);
}

function show_notif_login(TextNotif) {
    const TextNotifElement = document.querySelector('.toast-body');
    TextNotifElement.textContent = TextNotif;

    const toastAnimationExample = document.querySelector('.toast-ex');
    let selectedType, selectedAnimation, toastAnimation;

    selectedType = "text-primary";
    selectedAnimation = "animate__fade";
    toastAnimationExample.classList.add(selectedAnimation);
    toastAnimationExample.querySelector('.ti').classList.add(selectedType);
    toastAnimation = new bootstrap.Toast(toastAnimationExample);
    toastAnimation.show();
}

document.addEventListener("DOMContentLoaded", function () {

    data_work_time = [];
    dictionary_data = {};
    START_HOUR = 8; // 8 صبح
    END_HOUR = 24; // 12 بامداد (تساوی با ساعت 0 روز بعد)

    // شیء برای ذخیره زمان‌های رزرو شده برای هر روز
    reservations = {};

    // لیست‌کردن دکمه‌ها بر اساس عنوان
    const buttonsToHide = [{
            title: "ماه view"
        },
        {
            title: "هفته view"
        },
        {
            title: "لیست view"
        },
        {
            title: "روز view"
        },
    ];

    buttonsToHide.forEach(buttonConfig => {
        // پیدا کردن دکمه با خاصیت title مشخص‌شده
        const button = document.querySelector(`button[title="${buttonConfig.title}"]`);
        if (button) {
            button.style.display = "none"; // مخفی کردن با استایل
        }
    });


    highlightPastCells_DataSet();

    // اضافه کردن ایتم‌ها
    add_html_notif_login();

    load_doctor_data();

});

function Check_TD_Time(event) {
    let clickedElement = event.target; // عنصر کلیک شده
    let tag_name = clickedElement.tagName
    for (let i = 0; i < 10; i++) {
        if (tag_name != "TD") {
            clickedElement = clickedElement.parentElement; // عنصر کلیک شده
            tag_name = clickedElement.tagName
        } else {
            break;
        }
    }
}

function Check_TD_past(event) {
    let clickedElement = event.target; // عنصر کلیک شده
    let tag_name = clickedElement.tagName
    for (let i = 0; i < 10; i++) {
        if (tag_name != "TD") {
            clickedElement = clickedElement.parentElement; // عنصر کلیک شده
            tag_name = clickedElement.tagName
        } else {
            if (clickedElement.classList.contains("past")) {
                show_notif_login("امکان بررسی نوبت های روز های گذشته نیست.");
                break;
            }
            if (clickedElement.querySelector('.fc-event')) {
                displayVisitInfo(clickedElement.getAttribute('data-date'));
                break;
            }
        }
    }
}

window.addEventListener('load', function () {
    const fcButtons = document.querySelectorAll(".fc-button");

    const button1 = fcButtons[2];
    const button2 = fcButtons[3];

    // اضافه کردن Event Listener برای کلیک روی دکمه
    button1.addEventListener('click', highlightPastCells_DataSet);
    button2.addEventListener('click', highlightPastCells_DataSet);

    document.addEventListener('click', Check_TD_past);

    add_btn_add_visit();
});

function displayVisitInfo(date_text) {
    const data_table_Data = data_work_time.filter(item => item.date === date_text);

    const modalBodyElements = document.getElementById('add-item-modal');
    modalBodyElements.innerHTML = "";

    modalBodyElements.insertAdjacentHTML('beforeend', `
        <div class="row custom-background">
            <div class="col-12 text-center">
                <label>تاریخ کاری</label>
                <input type="text" id="data_work" class="form-control text-center" placeholder="تاریخ کاری" value="${data_table_Data[0].date_p}" disabled>
            </div>
        </div>
    `);

    data_table_Data.forEach((item, index) => {
        modalBodyElements.insertAdjacentHTML('beforeend', `
            <div class="row mt-3 custom-background" id="number-${item.id}">
                <div class="row mt-3">
                    <div class="col-12 text-center">
                        <label>مرکز درمانی</label>
                        <input type="search" id="search_m" class="form-control text-center" placeholder="انتخاب مرکز درمانی" value="${data_table_Data[0].treatmentCenter}" disabled>
                    </div>
                </div>
                <div class="row mt-3">
                    <div class="col-md-6">
                        <label>ساعت‌ شروع</label>
                        <input type="text" id="attendance_hour_start" class="form-control" placeholder="شروع حضور" value="${item.startTime}" disabled>
                    </div>
                    <div class="col-md-6">
                        <label>ساعت‌ پایان</label>
                        <input type="text" id="attendance_hour_end" class="form-control" placeholder="پایان حضور" value="${item.endTime}" disabled>
                    </div>
                </div>
                <div class="row mt-3">
                    <div class="col-md-6">
                        <label>میانگین زمان ویزیت (دقیقه)</label>
                        <input type="number" id="avg_duration" class="form-control" placeholder="مدت زمان" value="${item.averageVisitTime}" disabled>
                    </div>
                    <div class="col-md-6">
                        <label>تعداد ویزیت کل</label>
                        <input type="number" id="all_visits" class="form-control" placeholder="تعداد ویزیت کل" value="${item.totalVisits}" disabled>
                    </div>
                </div>
                <div class="row mt-3">
                    <div class="col-md-6">
                        <label>تعداد ویزیت آنلاین</label>
                        <input type="number" id="online_visits" class="form-control" placeholder="تعداد ویزیت آنلاین" value="${item.onlineVisits}" disabled>
                    </div>
                    <div class="col-md-6">
                        <label>تعداد ویزیت دستی</label>
                        <input type="number" id="manual_visits" class="form-control" placeholder="تعداد ویزیت دستی" value="${item.manualVisits}" disabled>
                    </div>
                </div>
            </div>
        `);
    });

    const myModal = new bootstrap.Modal(document.getElementById('config-reserve'));
    myModal.show();
}
ارورش هم اینجاس

profile-doctor-medical-calendar.js:217 Error loading data: TypeError: Cannot set properties of null (setting 'innerHTML')
    at addEventToDate (profile-doctor-medical-calendar.js:85:20)
    at profile-doctor-medic…-calendar.js:189:13
    at Array.forEach (<anonymous>)
    at data_addEventToDate (profile-doctor-medic…-calendar.js:176:20)
    at profile-doctor-medic…-calendar.js:214:13