# Cargar los archivos de Excel (Asegúrate de que los nombres coincidan exactamente con tus archivos)
df_tiempos <- read_excel("Observaciones_Tiempos_Restaurante.xlsx")
df_personas <- read_excel("obersvaciones_personas.xlsx")

# Mostrar la base de datos de tiempos como una tabla interactiva
datatable(df_tiempos, 
          options = list(pageLength = 5, scrollX = TRUE),
          caption = "Registro de Tiempos Operativos por Mesa")
# Extraer solo las columnas que tienen números (los tiempos)
vars_numericas <- df_tiempos %>% select_if(is.numeric)

# Crear la matriz de correlación
matriz_corr <- cor(vars_numericas, use = "complete.obs")

# Graficar
corrplot(matriz_corr, method = "color", type = "upper", 
         addCoef.col = "black", tl.col = "black", tl.srt = 45, 
         diag = FALSE, number.cex = 0.7)

# Asegurarnos de que los nombres de las columnas coincidan con los de tu Excel.
# Si tu columna se llama distinto, cámbialo en "x" y "y" dentro de aes()
p <- ggplot(df_tiempos, aes(x = `Espera Despacho (min)`, y = `Tiempo Total Ciclo (min)`, 
                            color = `Franja Horaria`, 
                            text = paste("Mesa:", `N° Mesa`, "<br>Franja:", `Franja Horaria`))) +
  geom_point(size = 3, alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, color = "red", linetype = "dashed") +
  labs(title = "Impacto del Cuello de Botella en el Ciclo Total",
       x = "Tiempo de Espera en Despacho de Comida (min)",
       y = "Tiempo Total del Cliente en el Restaurante (min)") +
  theme_minimal()

# Convertir el gráfico estático de ggplot en uno dinámico
ggplotly(p, tooltip = "text")
# Crear el gráfico animado
p_anim <- ggplot(df_tiempos, aes(x = `Espera Despacho (min)`, y = `Tiempo Total Ciclo (min)`, color = `Franja Horaria`)) +
  geom_point(size = 5, alpha = 0.8) +
  theme_minimal() +
  labs(title = 'Evolución de los Tiempos de Espera',
       subtitle = 'Mesa evaluada: {closest_state}',
       x = 'Espera en Despacho (min)',
       y = 'Tiempo Total de Ciclo (min)') +
  transition_states(`N° Mesa`, transition_length = 2, state_length = 1) +
  enter_fade() + 
  exit_shrink()

# Renderizar la animación
animate(p_anim, renderer = gifski_renderer())