Commit d14ca5d2 authored by Axel Tomas Baltierra Hernandez's avatar Axel Tomas Baltierra Hernandez
Browse files

Desabilita las horas ocupadas

parent bb9d6b35
Loading
Loading
Loading
Loading
+963 KiB

File added.

No diff preview for this file type.

+276 KiB
Loading image diff...
+85 −14
Original line number Diff line number Diff line
@@ -232,13 +232,12 @@ function getActiveDay(date) {
//function update events when a day is active
function updateEvents(date) {
  let events = "";
  let occupiedTimes = new Set(); // Define occupiedTimes aquí

  eventsArr.forEach((event) => {
    if (
      date === event.day &&
      month + 1 === event.month &&
      year === event.year
    ) {
    if (date === event.day && month + 1 === event.month && year === event.year) {
      event.events.forEach((event) => {
        occupiedTimes.add(event.time); // Agregar la hora ocupada
        events += `<div class="event">
            <div class="title">
              <i class="fas fa-circle"></i>
@@ -251,13 +250,19 @@ function updateEvents(date) {
      });
    }
  });

  if (events === "") {
    events = `<div class="no-event">
            <h3>No Hay Eventos Por Mostrar</h3>
        </div>`;
  }

  eventsContainer.innerHTML = events;
  saveEvents();

  // Llamar a disableOccupiedTimes después de calcular occupiedTimes
  console.log(occupiedTimes);
  disableOccupiedTimes(occupiedTimes);
}

//function to add event
@@ -282,6 +287,8 @@ addEventTitle.addEventListener("input", (e) => {

//allow only time in eventtime from and to
addEventFrom.addEventListener("input", (e) => {
  const startTime = e.target.value;
  disableEndTimeOptions(startTime);
  addEventFrom.value = addEventFrom.value.replace(/[^0-9:]/g, "");
  if (addEventFrom.value.length === 2) {
    addEventFrom.value += ":";
@@ -611,9 +618,43 @@ function convertTime(time) {
  return time;
}

// Agregar el evento de validación cuando se cambia el valor
//timeFromInput.addEventListener('change', validateTimeInput);
//timeToInput.addEventListener('change', validateTimeInput);
function disableOccupiedTimes(occupiedTimes) {
  const startTimeSelect = document.getElementById("event-time-from");
  const endTimeSelect = document.getElementById("event-time-to");

  // Rehabilitar todas las opciones
  [...startTimeSelect.options, ...endTimeSelect.options].forEach(option => {
    option.disabled = false;
  });

  occupiedTimes.forEach(timeRange => {
    // Extraer la hora de inicio del rango
    const startTime = timeRange.split(" - ")[0].slice(0, 5);
    const endTime = timeRange.split(" - ")[1].slice(0, 5);;
    //console.log(startTime, endTime);

    // Deshabilitar la hora de inicio en ambos selectores
    let startOption = startTimeSelect.querySelector(`option[value="${startTime}"]`);
    let endOption = endTimeSelect.querySelector(`option[value="${endTime}"]`);
    console.log("opciones principales", startTime, endTime);
    if (startOption) startOption.disabled = true;
    if (endOption) endOption.disabled = true;

    // Deshabilitar las horas intermendias entre el inicio y el fin del evento.
    Array.from(startTimeSelect.options).forEach(option => {
      if (option.value > startTime && option.value < endTime) {
        //console.log("intermedios",option.value, startTime, endTime);
        option.disabled = true;
      }
    })
    Array.from(endTimeSelect.options).forEach(option => {
      if (option.value > startTime && option.value < endTime) {
        console.log("intermedios", option.value);
        option.disabled = true;
      }
    })
  });
}

// ---------------
// Función para generar las opciones de tiempo
@@ -638,8 +679,38 @@ function generateTimeOptions(selectElement) {
  }
}

// Función para deshabilitar horas en el selector de hora de fin
function disableEndTimeOptions(startTime) {
  Array.from(timeToSelect.options).forEach(option => {
      option.disabled = option.value <= startTime;
  });
}

// Función para generar las opciones de tiempo
function generateTimeOptions(selectElement) {
const startHour = 9; // 9:00 AM
const endHour = 16;  // 4:00 PM
const stepMinutes = 30; // Intervalo de 30 minutos

for (let hour = startHour; hour <= endHour; hour++) {
  for (let minutes = 0; minutes < 60; minutes += stepMinutes) {
    // Formatear las horas y minutos para que sean en formato HH:MM
    const hourString = String(hour).padStart(2, '0');
    const minuteString = String(minutes).padStart(2, '0');
    const timeString = `${hourString}:${minuteString}`;

    // Crear y agregar la opción al select
    const option = document.createElement('option');
    option.value = timeString;
    option.textContent = timeString;
    selectElement.appendChild(option);
  }
}
}

// Generar opciones para ambos selectores
const timeFromSelect = document.getElementById('event-time-from');
const timeToSelect = document.getElementById('event-time-to');
generateTimeOptions(timeFromSelect);
generateTimeOptions(timeToSelect);
disableEndTimeOptions(timeFromSelect.value);
+1 −30
Original line number Diff line number Diff line
@@ -179,42 +179,13 @@
            <div class="add-event-input">
              <label for="event-time-from">Hora de inicio:</label>
              <select id="event-time-from" class="event-time-from">
                <option value="09:00">09:00</option>
                <option value="09:30">09:30</option>
                <option value="10:00">10:00</option>
                <option value="10:30">10:30</option>
                <option value="11:00">11:00</option>
                <option value="11:30">11:30</option>
                <option value="12:00">12:00</option>
                <option value="12:30">12:30</option>
                <option value="13:00">13:00</option>
                <option value="13:30">13:30</option>
                <option value="14:00">14:00</option>
                <option value="14:30">14:30</option>
                <option value="15:00">15:00</option>
                <option value="15:30">15:30</option>
                <option value="16:00">16:00</option>
               
              </select>
            </div>

            <div class="add-event-input">
              <label for="event-time-to">Hora de fin:</label>
              <select id="event-time-to" class="event-time-to">
                <option value="09:00">09:00</option>
                <option value="09:30">09:30</option>
                <option value="10:00">10:00</option>
                <option value="10:30">10:30</option>
                <option value="11:00">11:00</option>
                <option value="11:30">11:30</option>
                <option value="12:00">12:00</option>
                <option value="12:30">12:30</option>
                <option value="13:00">13:00</option>
                <option value="13:30">13:30</option>
                <option value="14:00">14:00</option>
                <option value="14:30">14:30</option>
                <option value="15:00">15:00</option>
                <option value="15:30">15:30</option>
                <option value="16:00">16:00</option>
              </select>
            </div>

+22 −1
Original line number Diff line number Diff line
@@ -32,7 +32,28 @@ if (isset($_POST["accion"])) {
}

function accionVerCitas($con) {

    $tipo = $_SESSION['Tipo'];
    $idAl = $_SESSION['ID'];

    switch ($tipo) {
        case 1:
            //$query = "SELECT * FROM `proyecto` proy JOIN `proyecto_alumno` proyal 
              //ON (proy.idproyect=proyal.pa_idproyect) WHERE pa_idalumno = '$idAl'";
            
            $query = "SELECT idcitas, fecha, asunto AS title, inicio, final AS timeTo FROM citas
            JOIN proyecto_alumno ON proyecto_idproyect = pa_idproyect WHERE pa_idalumno = '$idAl'";
            break;
        case 0:
            //$query = "SELECT * FROM `proyecto` JOIN  WHERE solicitante_idsolicitante = '$idAl'";
            $query = "SELECT idcitas, fecha, asunto AS title, inicio, final AS timeTo FROM citas
            JOIN proyecto ON proyecto_idproyect = idproyect WHERE solicitante_idsolicitante = '$idAl'";
            break;
        case 2:
            $query = "SELECT idcitas, fecha, asunto AS title, inicio, final AS timeTo FROM citas";
            break;
    }
   
    $result = $con->query($query);

    $eventosAgrupados = array();