Sablon

library(shiny)

# interfata utilizator 
ui <- fluidPage('Text oarecare')

# server
server <- function(input, output) {}

# rulare
shinyApp(ui = ui, server = server)

UI Panels

combinam mai multe elemente cu panels

absolutePanel()

  • asezat pe o anumita pozitie
  • poate fi fixat sau nu
  • poate fi mutat de utilizator (la alegere)
library(shiny)

ui <- fluidPage(
  absolutePanel(
    sliderInput('numar', min=0,max=10, value=4, label='tra la la'),
    submitButton(),
    top=20, left=200, draggable=TRUE, fixed=TRUE, cursor='move'
  )
  
)

server <- function(input, output){
  
}


shinyApp(ui, server)

inputPanel

  • daca dorim sa grupam elementele de input
library(shiny)

ui <- fluidPage(
  inputPanel(
    sliderInput('numar', min=0,max=10, value=4, label='tra la la'),
    textInput('text', label='ceva text'),
    numericInput('numar2', label='si alt numar', min=-100, max=100, step=10, value=0)
  )
  
)

server <- function(input, output){
  
}


shinyApp(ui, server)

headerPanel() si titlePanel()

library(shiny)

ui <- fluidPage(
  titlePanel("title panel"),
  p("text oarecare"),
  headerPanel("header panel"),
  textInput('text', label='ceva obiect'),
  headerPanel('alt header panel')
  
)

server <- function(input, output){
  
}


shinyApp(ui, server)

wellPanel()

  • uneste obiectele
library(shiny)

ui <- fluidPage(
  wellPanel(
    textInput('text1', label='primul text'),
    textInput('text2', label='al doilea text'),
    textInput('text3', label='al treilea text')
  )
)

server <- function(input, output){
  
}


shinyApp(ui, server)

tabsetPanel() si tabPanel()

  • organizeaza pagina cu tab-uri
  • forma cea mai simpla:
library(shiny)

ui <- fluidPage( tabsetPanel(
  tabPanel("tab 1", 
           textInput('textTab1','primul tab')),
  tabPanel("tab 2", 
           textInput('textTab2','al doilea tab cu altceva')),
  tabPanel("tab 3", 
           'Al treilea tab.... ')
    )
  )

server <- function(input, output){
  
}


shinyApp(ui, server)
  • sau daca vrem sa folosim informatia legata de tab-ul selectat:
library(shiny)

ui <- fluidPage( tabsetPanel(id='tab', selected='tab 3',
  tabPanel("tab 1", 
           textInput('textTab1','primul tab')),
  tabPanel("tab 2", 
           textInput('textTab2','al doilea tab cu altceva')),
  tabPanel("tab 3", 
           'Al treilea tab.... ')
    ),
  tags$hr(),
  textOutput('text')
  )

server <- function(input, output){
  output$text <- renderText({
    z=c('e selectat tab-ul ', input$tab)
    z
  })
}


shinyApp(ui, server)

UI layouts

Pentru organizarea globala a paginii

flowLayout

  • aranjeaza elementele pe linie
library(shiny)

ui <- fluidPage( 
  flowLayout(
    textInput('text1','text1'),
    textInput('text2','text2'),
    textInput('text3','text3'),
    textInput('text4','text4'),
    textInput('text5','text5')
  )
  )

server <- function(input, output){

  }


shinyApp(ui, server)

sidebarLayout()

library(shiny)

ui <- fluidPage(
  titlePanel('titlu'),
  sidebarLayout(
    sidebarPanel('sidebar cu orice obiecte', width=2),
    mainPanel('mainpanel cu orice obiecte')
  )
)

server <- function(input, output){

  }


shinyApp(ui, server)

splitLayout()

library(shiny)

ui <- fluidPage(
  titlePanel('titlu'),
  splitLayout(
    mainPanel('mainpanel 1 cu orice obiecte'),
    mainPanel('mainpanel 2 cu orice obiecte'),
    mainPanel('mainpanel 3 cu orice obiecte')
  )
)

server <- function(input, output){

  }


shinyApp(ui, server)