diff --git a/Nitrogen-CIT/app.R b/Nitrogen-CIT/app.R new file mode 100644 index 0000000..26ef0e7 --- /dev/null +++ b/Nitrogen-CIT/app.R @@ -0,0 +1,94 @@ +library(shiny) +library(readxl) +library(DT) +library(dplyr) + +# Define UI for application +ui <- fluidPage( + navbarPage("Nitrogen CIT", + tabPanel("Listado", + sidebarPanel( + fileInput(inputId = "file", label = "Fichero", multiple = F) + ), + + mainPanel( + DTOutput("DT") + ) + ), + tabPanel("Caja", + sidebarPanel( + selectInput(inputId = "test", "", choices = ""), + uiOutput(outputId = "caja_out") + ), + + mainPanel( + tableOutput("DT_caja") + ) + ) + ) +) + +# Define server logic required +server <- function(input, output) { + dades<-reactiveValues() + dades$taula<-NULL + + ## Listado ---- + + observe({ + req(input$file) + df.list<-lapply(excel_sheets(input$file$datapath), read_xlsx, path=input$file$datapath, range="B1:K31", col_type="text") + names(df.list)<-excel_sheets(input$file$datapath) + name.row<-seq(from=1, to=nrow(df.list[[1]]), by=3) + date.row<-seq(from=2, to=nrow(df.list[[1]]), by=3) + desc.row<-seq(from=3, to=nrow(df.list[[1]]), by=3) + for (i in 1:length(df.list)){ + df.list[[i]]<-data.frame( + Tanque=gsub("-[0-9]* #[0-9]*$","",names(df.list)[i]), + Rack=gsub("^[A-Z]-| #[0-9]*$","",names(df.list)[i]), + Caja=names(df.list)[i], + Fila=rep(LETTERS[1:10], 10), + Columna=factor(as.character(rep(1:10, each=10)),levels=as.character(1:10)), + Nombre=unlist(df.list[[i]][name.row,]), + Fecha=unlist(df.list[[i]][date.row,]), + Descripción=unlist(df.list[[i]][desc.row,]) + ) + } + df<-do.call(rbind, df.list) + df[grepl("^[0-9]*$", df$Fecha),"Fecha"]<-as.character(as.Date(as.numeric(df[grepl("^[0-9]*$", df$Fecha),"Fecha"]), origin = "1899-12-30")) + for (i in c("Tanque", "Rack","Caja","Fila")){ + df[,i]<-factor(df[,i]) + } + dades$taula<-df + }) + + output$DT <- renderDT({ + req(dades$taula) + datatable(dades$taula, filter = "top", rownames = F, escape = F, extensions='Buttons',options = list(autoWidth=TRUE, dom = 'Bfrtip',buttons=I('colvis'), lengthMenu=c(10,20,50), pageLength=30)) + }) + + ## Caja ---- + + output$caja_out<-renderUI({ + observeEvent(dades$taula, {}) + selectInput(inputId = "caja", "Caja", choices = unique(dades$taula$Caja)) + }) + + output$DT_caja <- renderTable({ + req(dades$taula) + caja_l<-dades$taula[dades$taula$Caja == input$caja,] + caja_l$Nombre[is.na(caja_l$Nombre)]<-"" + caja_l$Fecha[is.na(caja_l$Fecha)]<-"" + caja_l$Descripción[is.na(caja_l$Descripción)]<-"" + caja<-as.data.frame(matrix(data= paste(caja_l$Nombre, caja_l$Fecha, caja_l$Descripción, sep="
"), + ncol = 10, nrow=10)) + colnames(caja)<-as.character(1:10) + rownames(caja)<-LETTERS[1:10] + + caja + }, rownames = TRUE, sanitize.text.function=identity, bordered = TRUE) + +} + +# Run the application +shinyApp(ui = ui, server = server)