inst/application/app.R

library(shiny)
library("dplyr", warn.conflicts = FALSE)
library("ggplot2")
library("scales")
library("knitr")
library("kableExtra")


source("functions.R")

# Define UI for app that draws a histogram ----
ui <- fluidPage(
  
  # App title ----
  titlePanel("Panel de Control"),
  
  # Sidebar layout with input and output definitions ----
  sidebarLayout(
    sidebarPanel(
      selectInput("planEstudios", h4("Selecciona un plan de estudios:"),
                  choices = list("5011 - Grado en Arquitectura" = "5011",
                                 "5021 - Grado en Ingeniería de Edificación" = "5021",
                                 "5031 - Grado en Turismo" = "5031",
                                 "5041 - Grado en Ingeniería de Sistemas de Telecomunicaciones" = "5041", 
                                 "5051 - Grado en Ingeniería Telemática" = "5051",
                                 "5061 - Grado en Ingeniería Eléctrica" = "5061",
                                 "5071 - Grado en Ingeniería Electrónica Industrial y Automática" = "5071",
                                 "5081 - Grado en Ingeniería Mecánica" = "5081",
                                 "5091 - Grado en Ingeniería Química Industrial" = "5091",
                                 "5101 - Grado en Administración y Dirección de Empresas" = "5101",
                                 "5111 - Grado en Ingeniería de Organización Industrial" = "5111",
                                 "5121 - Grado en Ingeniería de Tecnologías Industriales" = "5121",
                                 "5131 - Grado en Arquitectura Naval e Ingeniería de Sistemas Marinos" = "5131",
                                 "5141 - Grado en Ingeniería de la Hortofruticultura y Jardinería" = "5141",
                                 "5151 - Grado en Ingeniería de las Industrias Agroalimentarias" = "5151",
                                 "5161 - Grado en Ingeniería Civil" = "5161",
                                 "5171 - Grado en Ingeniería de Recursos Minerales y Energía" = "5171", 
                                 "5181 - Grado en Ingeniería Agroalimentaria y de Sistemas Biológicos" = "5181",
                                 "5191 - Grado en Fundamentos de Arquitectura" = "5191"), 
                  selected = 5041),
      h4("Opciones de visualización"),
      fluidRow(
        column(6, checkboxInput("showTablaDatosGenerales", "Resumen de datos", value = TRUE)),
        column(6, checkboxInput("showGrafica", "Gráfica", value = FALSE))
      ),
      conditionalPanel("input.showGrafica", 
                       selectInput("cursoID", h4("Curso"), 
                                   choices = list("1er Curso" = "1",
                                                  "2do Curso" = "2",
                                                  "3er Curso" = "3", 
                                                  "4to Curso" = "4")))
      
    ),
    mainPanel(
      conditionalPanel("input.showTablaDatosGenerales",
                       dataTableOutput("tabla")),
      conditionalPanel("input.showGrafica", 
                       plotOutput("grafica", height = "600px"))
      
    )
  )
)

# Define server logic required to draw a histogram ----
server <- function(input, output) {
  output$tabla <- renderDataTable({as.data.frame(jsonlite::fromJSON(t_datos_generales(input$planEstudios)))})
  output$grafica <- renderPlot({
    porcentajes <- as.data.frame(jsonlite::fromJSON(g_presentados_asignatura(input$planEstudios, input$cursoID)))
    ggplot(data = porcentajes, aes(x = ASS_ASS_DESC)) +
      geom_col(aes(y = as.numeric(Freq), fill = PRESENTADO), position = position_dodge()) +
      scale_y_continuous(labels=percent) +
      labs(x = "Nombre de la asignatura", y = "Porcentaje de presentados/no presentados") +
      theme(axis.text.x = element_text(angle = 75, hjust = 1))
  })
}

# Create Shiny app ----
shinyApp(ui = ui, server = server)
vic-hl/paqueteTFM documentation built on May 6, 2019, 8:32 p.m.