close / app.R
pajuan's picture
Update app.R
2e118de verified
library(magrittr)
library(shiny)
library(rstudioapi)
library(dplyr)
#
# 0. routing
# --------
options(shiny.port = 7860)
options(shiny.host = "159.65.249.154")
#
PROYECT_HOME=dirname(rstudioapi::getActiveDocumentContext()$path)
setwd(PROYECT_HOME)
list.files(getwd())
#
absolute_path=function(
APP_HOME
){
sprintf("%s/%s", PROYECT_HOME,APP_HOME)
}
absolute_path("datasource inspecciones")
#
#setwd(absolute_path("assets"))
#unserialized_logo=imager::load.image("logo.png")
#
# 1.0 dependencias
# --------
#
library(shiny)
options(shiny.maxRequestSize=30*1024^2)
#
# 1.1 custom-dependencias
# --------
CODE_HOME=absolute_path("code")
setwd(CODE_HOME)
source("dataframe extention.R")
source("Compute_YEI.R")
#
# 1.1 authentication
# --------
#
talk_states=list(
"unauthenticated"="No has ingresado credenciales válidas aún",
"authenticated"="Estás autenticado y los reportes están listos para exportar"
)
#
CURRENT_STATE="unauthenticated"
EXPORT_STATE=FALSE
#
credentials.authenticate=function(
input_user,
input_pasword,
valid_credentials=data.frame(user="stockpesca", pasword="Temporal1843@!")
){
#
# cambia el estado de la aplicaci?n seg?n la validez de las credenciales
#
valid=
valid_credentials %>% dplyr::filter(user==input_user & pasword==input_pasword)
if (nrow(valid)>0)
{ .GlobalEnv[["CURRENT_STATE"]] ="authenticated"}
else {
.GlobalEnv[["CURRENT_STATE"]] ="unauthenticated"
}
print(.GlobalEnv[["CURRENT_STATE"]])
}
#
# 2.0 data-access
# --------
#
empty_table=data.frame(
data=c("No tiene permisos para ver esta tabla")
)
#
datasource.raw_inspecciones=function(
){
setwd(absolute_path("datasource inspecciones"))
readxl::read_excel("TABLA MAESTRA.xlsx") %>%
#head() %>%
as.data.frame()
}
#datasource.raw_inspecciones() %>% View()
inspecciones.cache=NULL
#inspecciones.cache=datasource.raw_inspecciones()
#
query_data=function(
file_path
){
if(.GlobalEnv[["CURRENT_STATE"]]=="unauthenticated"){
empty_table
} else {
# datasource.raw_inspecciones()
# #
# user_input_pwd="Temporal1843@!"
# db_file_name="inspecciones.accdb"
#
# try({
# #
# setwd(absolute_path("datasource inspecciones"))
# library(odbc)
# conexion <- dbConnect(odbc::odbc(),
# .connection_string =
# sprintf(
# paste("Driver={Microsoft Access Driver (*.mdb, *.accdb)}",
# "Dbq=%s",
# "Pwd=%s",
# sep=";"), paste(paste(absolute_path("datasource inspecciones"), db_file_name, sep="/" )),user_input_pwd))
# #https://www.connectionstrings.com/access-2007/
#
# library(dplyr)
# query <-
# dbSendQuery(conexion, "SELECT * FROM inspecciones;")
# #
# dbFetch(query)
# }) %>% as.data.frame()
#
tryCatch({
data <- readxl::read_excel(file_path)
print("Archivo leído correctamente")
data
}, error = function(e) {
print("Error al leer el archivo:")
print(e$message)
data.frame(Mensaje = "Error al leer el archivo Excel")
})
}
}
#
# 2.1 reports
# --------
#
inspecciones.activas=function(
inspecciones
){
inspecciones %>%
#
dplyr::mutate(
activa=TRUE
) %>%
dplyr::filter(
activa
)
}
#
inspecciones.ensamblar_variables_de_reporte=function(
inspecciones
){
inspecciones %>%
dplyr::mutate(
ano=ANO_ZARPE,
mes=MES_ZARPE,
arte=ARTE,
sitio=SITIO,
fecha=paste(ANO_ZARPE, MES_ZARPE, DIA_ZARPE, sep="+" ),
horas_faena=HORA_FAENA
)
}
#
tabla_de_reporte.formatear_ciclo_anual_en_columnas=
function(
Tabla_de_reporte
){
Tabla_de_reporte %>%
tidyr::pivot_wider(
names_from = mes,
names_prefix = "month_",
values_from = dplyr::last(names(.))
) %>%
Dataframe.order(
c( grep(names(.), pattern="^[^m]", value=TRUE),
paste("month_", 1:12, sep=""))
)
}
#
table_logic_per_index=list(
"1.1"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
reportada="(conteo) faenas activas",
faenas_activas=sub_df %>% nrow()
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.2"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte, .$sitio)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
sitio=dplyr::first(sub_df$sitio),
reportada="(conteo) faenas activas",
faenas_activas=sub_df %>% nrow()
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.3"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte, .$AREA, .$SUBAREA)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
area=dplyr::first(sub_df$AREA),
subarea=dplyr::first(sub_df$SUBAREA),
reportada="(conteo) faenas activas",
faenas_activas=nrow(sub_df)
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.4"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
reportada="dias de actividad",
dias_actividad=length(unique(sub_df$fecha))
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.5"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte, .$sitio)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
sitio=dplyr::first(sub_df$sitio),
reportada="dias de actividad",
dias_actividad=length(unique(sub_df$fecha))
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.6"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte)) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
reportada="(promedio) de las horas de faena x (1.3)",
horas_de_faena=round(mean(sub_df$horas_faena),3)*(1.3)
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
},
"1.7"=function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
split(paste(.$ano, .$mes, .$arte, .$AREA, .$SUBAREA )) %>%
lapply(function(sub_df){
data.frame(
ano=dplyr::first(sub_df$ano),
mes=dplyr::first(sub_df$mes),
arte=dplyr::first(sub_df$arte),
area=dplyr::first(sub_df$AREA),
subarea=dplyr::first(sub_df$SUBAREA),
reportada="(promedio) de las horas de faena x (1.3)",
horas_de_faena=round(mean(sub_df$horas_faena),3)*(1.3)
)
}) %>%
bind_rows() %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
)
#
setwd(CODE_HOME)
source("Compute_YEI.R")
#
table_logic_per_index[["2.1"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano" ,
"mes",
"CLASIFICAC",
"NOM_VULGAR"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
#
table_logic_per_index[["2.2"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte" ,
"GRUPO",
"SUBGRUPO"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
table_logic_per_index[["2.3"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte",
"sitio"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
table_logic_per_index[["2.4"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte",
"SUBGRUPO",
"NOM_VULGAR"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
#
table_logic_per_index[["2.5"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte",
"SUBGRUPO",
"NOM_VULGAR",
"AREA"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
table_logic_per_index[["2.6"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte",
"METODO",
"GRUPO",
"SUBGRUPO",
"NOM_VULGAR"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
table_logic_per_index[["2.7"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
inspecciones.GROUP_BY.compute_yei(
GROUP_BY=c(
"ano",
"mes",
"arte",
"METODO",
"GRUPO",
"SUBGRUPO",
"NOM_VULGAR",
"AREA"
)
) %>%
tabla_de_reporte.formatear_ciclo_anual_en_columnas()
}
#
#
setwd(CODE_HOME)
source("Compute_YEI.R")
#
inspecciones.ensamblar_captura_diaria=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.activas() %>%
inspecciones.ensamblar_variables_de_reporte() %>%
dplyr::transmute(
captura_total=CT_KG,
dia_zarpe=paste(ANO_ZARPE, MES_ZARPE , DIA_ZARPE, sep="/" ),
dia_arribo=paste(ANO_ARRIBO, MES_ARRIBO, DIA_ARRIBO, sep="/" ),
num_pescadores=PESCADORES,
arte_pesca=ARTE,
grupo=GRUPO
) %>%
dplyr::mutate(
dia_zarpe=as.Date(dia_zarpe),
dia_arribo=as.Date(dia_arribo)
) %>%
dplyr::mutate(
num_dias=as.numeric((dia_arribo-dia_zarpe)+1)
) %>%
dplyr::mutate(
captura_diaria=round( (captura_total/num_dias),4),
captura_diaria_por_pescador=round( ( (captura_total/num_dias)/num_pescadores ),4),
)
}
#
table_logic_per_index[["3.1"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.ensamblar_captura_diaria() %>%
split(paste(.$arte_pesca,.$grupo)) %>%
lapply(function(sub_df){
data.frame(
mean_captura_diaria=round(mean(sub_df$captura_diaria, na.rm=TRUE),3),
sd_captura_diaria=round(sd(sub_df$captura_diaria, na.rm=TRUE), 3),
#IC_captura_diaria_lower=,
#IC_captura_diaria_lower=,
arte_pesca=dplyr::first(sub_df$arte_pesca),
grupo=dplyr::first(sub_df$grupo)
)
}) %>%
bind_rows()
}
#
#
table_logic_per_index[["3.2"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.ensamblar_captura_diaria() %>%
split(paste(.$arte_pesca,.$grupo)) %>%
lapply(function(sub_df){
data.frame(
mean_captura_diaria_por_pescado=round(mean(sub_df$captura_diaria_por_pescador, na.rm=TRUE),3),
sd_captura_diaria_por_pescado=round(sd(sub_df$captura_diaria_por_pescador, na.rm=TRUE), 3),
#IC_captura_diaria_lower=,
#IC_captura_diaria_lower=,
arte_pesca=dplyr::first(sub_df$arte_pesca),
grupo=dplyr::first(sub_df$grupo)
)
}) %>%
bind_rows()
}
table_logic_per_index[["3.3"]]=
function(
inspecciones=inspecciones.cache
){
inspecciones %>%
inspecciones.ensamblar_captura_diaria() %>%
dplyr::mutate(
captura_diaria_por_pescador_por_hora = captura_diaria_por_pescador / 24 # Converting to hourly rate
) %>%
split(paste(.$arte_pesca,.$grupo)) %>%
lapply(function(sub_df){
data.frame(
mean_captura_diaria_por_pescador_por_hora=round(mean(sub_df$captura_diaria_por_pescador_por_hora, na.rm=TRUE),3),
sd_captura_diaria_por_pescador_por_hora=round(sd(sub_df$captura_diaria_por_pescador_por_hora, na.rm=TRUE), 3),
arte_pesca=dplyr::first(sub_df$arte_pesca),
grupo=dplyr::first(sub_df$grupo)
)
}) %>%
bind_rows()
}
#
fetch_table_per_index=function(
index=1.1
){
table_logic_per_index[[index]]()
}
#
table.preview=function(
table,
max_rows=15,
max_cols=8
){
tryCatch({
table[1:min(max_rows, nrow(table) ), 1:min(max_cols, ncol(nrow(table)))]
},
error = function(e){empty_table})
}
# 5. exportar a un reporte ?nico
#
# 6. interfaz del usuario exportar a un reporte ?nico
#
setwd(PROYECT_HOME)
#
library(shiny)
ui = fluidPage(
column(3,
fluidRow(
wellPanel(
shiny::HTML("<p> Bienvenido a la <strong> aplicación pesquera </strong>. Escoja una acción </p>")
)),
fluidRow(
wellPanel(
shiny::tags$strong("Credenciales"),
shiny::textInput("usuario",
label=NULL,
placeholder = "inserte usuario",
width='100%'),
shiny::passwordInput("contrasena",
label=NULL,
placeholder = "inserte contrasena",
width='100%')
# shiny::actionButton("enviar_credenciales",
# "Enviar credenciales",
# width='100%')
)),
fluidRow(
wellPanel(
fileInput('main_file_input', 'Seleccione un archivo desde su computador',
accept = c(".xlsx")
))),
fluidRow(
wellPanel(
shiny::tags$strong("Reportes"),
shiny::tags$br(),
shiny::actionButton("exportar_reportes",
"Exportar reportes",
width='100%'),
textOutput("export_result")
),
plotOutput(
"logo",
width = "100%",
height = "200px")
),
), # column,
column(12-4,
offset = 1,
fluidRow(wellPanel(
shiny::tags$strong("Mensajes"),
textOutput("messages"))),
shiny::tags$strong("Pre-visualización de reportes"),
tabsetPanel(
tabPanel("0. Tabla maestra",
div(shiny::tableOutput("0_tabla_maestra"),
style = "font-size:50%")),
tabPanel("1. Esfuerzo",
tabsetPanel(
tabPanel(
"1.1",
div(shiny::tableOutput("1.1")),
style = "font-size:50%"),
tabPanel(
"1.2",
div(shiny::tableOutput("1.2")),
style = "font-size:50%"),
tabPanel(
"1.3",
div(shiny::tableOutput("1.3")),
style = "font-size:50%"
),
tabPanel(
"1.4",
div(shiny::tableOutput("1.4")),
style = "font-size:50%"),
tabPanel(
"1.5",
div(shiny::tableOutput("1.5")),
style = "font-size:50%"),
tabPanel(
"1.6",
div(shiny::tableOutput("1.6")),
style = "font-size:50%"),
tabPanel(
"1.7",
div(shiny::tableOutput("1.7")),
style = "font-size:50%")
)),
tabPanel("2. Captura total",
tabsetPanel(
tabPanel(
"2.1",
div(shiny::tableOutput("2.1")),
style = "font-size:50%"),
tabPanel(
"2.2",
div(shiny::tableOutput("2.2")),
style = "font-size:50%"),
tabPanel(
"2.3",
div(shiny::tableOutput("2.3")),
style = "font-size:50%"),
tabPanel(
"2.4",
div(shiny::tableOutput("2.4")),
style = "font-size:50%"),
tabPanel(
"2.5",
div(shiny::tableOutput("2.5")),
style = "font-size:50%"),
tabPanel(
"2.6",
div(shiny::tableOutput("2.6")),
style = "font-size:50%"),
tabPanel(
"2.7",
div(shiny::tableOutput("2.7")),
style = "font-size:50%")
)),
tabPanel("3. CPUE",
tabsetPanel(
tabPanel(
"3.1",
div(shiny::tableOutput("3.1")),
style = "font-size:50%"),
tabPanel(
"3.2",
div(shiny::tableOutput("3.2")),
style = "font-size:50%"),
tabPanel(
"3.3",
div(shiny::tableOutput("3.3")),
style = "font-size:50%")))
# )),
)))
#
index.managed_table=function(
index,
input
){
if(is.null(input$main_file_input) || CURRENT_STATE=="unauthenticated"){
empty_table
} else {
tryCatch({
fetch_table_per_index(index) %>%
table.preview()
}, error = function(e) {
empty_table
})
}
}
# server
server = function(input, output) {
#
usuario=reactive({input$usuario})
contrasena=reactive({input$contrasena})
exportar=reactive({input$exportar_reportes})
exportado=reactiveValues(
se_exporto=FALSE
)
actualizar_mensaje_exportado=reactive({
exportado
})
#
output$"0_tabla_maestra" = renderTable({
credentials.authenticate(input$usuario, input$contrasena)
print("Autenticado")
file_path_ = input$main_file_input$datapath
print("Path")
print(file_path_)
data <- query_data(file_path = file_path_)
#print(paste("Tabla maestra data:", data)) # debug statement
inspecciones.cache <<- data
loaded_data(data)
data %>%
table.preview()
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
# Crear un reactive value para los datos cargados
loaded_data <- reactiveVal(NULL)
# Observar cambios en el archivo cargado
observeEvent(input$main_file_input, {
file_path_ <- input$main_file_input$datapath
data <- query_data(file_path = file_path_)
inspecciones.cache <<- data
loaded_data(data)
})
authenticated <- reactive({
credentials.authenticate(input$usuario, input$contrasena)
return(.GlobalEnv[["CURRENT_STATE"]] == "authenticated")
})
output$"1.1" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.1")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover = TRUE,
bordered = TRUE,
width = '100%',
spacing = "s"
)
output$"1.2" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.2")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"1.3" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.3")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"1.4" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.4")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"1.5" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.5")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"1.6" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.6")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"1.7" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("1.7")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.1" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.1")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.2" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.2")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.3" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.3")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.4" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.4")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.5" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.5")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.6" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.6")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"2.7" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("2.7")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"3.1" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("3.1")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"3.2" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("3.2")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"3.3" = renderTable({
if (authenticated()) {
print(paste("User is authenticated, showing results..."))
data <- fetch_table_per_index("3.3")
data
} else {
print(paste("User is not authenticated, returning error message..."))
"No tiene permisos para ver esta tabla"
}
},
striped = TRUE,
hover=TRUE,
bordered=TRUE,
width='100%',
spacing="s"
)
output$"export_result"=renderText({
actualizar_mensaje_exportado()
ifelse(exportado$se_exporto==TRUE, "Felicidades! El reporte fue exportado", "Aún no has exportado el reporte")
})
observeEvent(input$exportar_reportes,{
if (.GlobalEnv[["CURRENT_STATE"]] == "authenticated") {
# Ensure the 'reportes' directory exists
setwd(PROYECT_HOME)
if (!dir.exists("reportes")) {
dir.create("reportes")
}
setwd("reportes")
# Create a new workbook
wb <- openxlsx::createWorkbook()
# Generate and add each report to a separate sheet
report_indices <- c("1.1", "1.2","1.3", "1.4", "1.5", "1.6", "1.7",
"2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7",
"3.1", "3.2","3.3")
for (index in report_indices) {
tryCatch({
report_data <- fetch_table_per_index(index)
openxlsx::addWorksheet(wb, sheetName = paste("Reporte", index))
openxlsx::writeData(wb, sheet = paste("Reporte", index), x = report_data)
}, error = function(e) {
print(paste("Error generating report", index, ":", e$message))
})
}
# Save the workbook
openxlsx::saveWorkbook(wb, "exporte_reportes.xlsx", overwrite = TRUE)
.GlobalEnv[["EXPORT_STATE"]] <- TRUE
exportado$se_exporto <- TRUE
# Optional: Show a message or log the successful export
print("Reports exported successfully!")
}
})
}
# Run the application
shinyApp(ui = ui, server = server)