## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----setup--------------------------------------------------------------------
# library(shiny)
# library(esquisse)

## ----esquisse-module----------------------------------------------------------
# library(esquisse)
# library(shiny)
# library(ggplot2)
# 
# ui <- fluidPage(
# 
#   titlePanel("Use esquisse as a Shiny module"),
# 
#   sidebarLayout(
#     sidebarPanel(
#       radioButtons(
#         inputId = "data",
#         label = "Select data to use:",
#         choices = c("mpg", "diamonds", "economics")
#       )
#     ),
#     mainPanel(
#       tabsetPanel(
#         tabPanel(
#           title = "esquisse",
#           esquisse_ui(
#             id = "esquisse",
#             header = FALSE # dont display gadget title
#           )
#         ),
#         tabPanel(
#           title = "output",
#           tags$b("Code:"),
#           verbatimTextOutput("code"),
#           tags$b("Filters:"),
#           verbatimTextOutput("filters"),
#           tags$b("Data:"),
#           verbatimTextOutput("data")
#         )
#       )
#     )
#   )
# )
# 
# 
# server <- function(input, output, session) {
# 
#   data_r <- reactiveValues(data = iris, name = "iris")
# 
#   observe({
#     data_r$data <- get(input$data)
#     data_r$name <- input$data
#   })
# 
#   results <- esquisse_server(
#     id = "esquisse",
#     data_rv = data_r
#   )
# 
#   output$code <- renderPrint({
#     results$code_plot
#   })
# 
#   output$filters <- renderPrint({
#     results$code_filters
#   })
# 
#   output$data <- renderPrint({
#     str(results$data)
#   })
# 
# }
# 
# shinyApp(ui, server)

## ----save-ggplot--------------------------------------------------------------
# function(input, output, session) {
# 
#   observeEvent(input$save, { # actionButton to trigger modal
#     save_ggplot_modal("ID", "Save plot") # launch modal
#   })
#   save_ggplot_server("ID", rv) # rv is a reactiValues with a slot 'plot'
# 
# }

## ----render-ggplot------------------------------------------------------------
# library(shiny)
# library(ggplot2)
# library(esquisse)
# 
# 
# ui <- fluidPage(
#   tags$h2("ggplot output"),
#   selectInput("var", "Variable:", names(economics)[-1]),
#   ggplot_output("MYID", width = "600px")
# )
# 
# server <- function(input, output, session) {
# 
#   render_ggplot("MYID", {
#     ggplot(economics) +
#       geom_line(aes(date, !!sym(input$var))) +
#       theme_minimal() +
#       labs(
#         title = "A cool chart made with ggplot2",
#         subtitle = "that you can export in various format"
#       )
#   })
# }
# 
# if (interactive())
#   shinyApp(ui, server)

## ----dragula-input------------------------------------------------------------
# ui <- fluidPage(
#   tags$h2("Demo dragulaInput"),
#   tags$br(),
#   dragulaInput(
#     inputId = "dad",
#     sourceLabel = "Source",
#     targetsLabels = c("Target 1", "Target 2"),
#     choices = names(iris),
#     width = "400px"
#   ),
#   verbatimTextOutput(outputId = "result")
# )
# 
# 
# server <- function(input, output, session) {
# 
#   output$result <- renderPrint(str(input$dad))
# 
# }
# 
# shinyApp(ui = ui, server = server)

## ----drop-input---------------------------------------------------------------
# ui <- fluidPage(
#   tags$h2("Drop Input"),
#   dropInput(
#     inputId = "mydrop",
#     choicesNames = tagList(
#       list(icon("home"), style = "width: 100px;"),
#       list(icon("flash"), style = "width: 100px;"),
#       list(icon("cogs"), style = "width: 100px;"),
#       list(icon("fire"), style = "width: 100px;"),
#       list(icon("users"), style = "width: 100px;"),
#       list(icon("info"), style = "width: 100px;")
#     ),
#     choicesValues = c("home", "flash", "cogs",
#                       "fire", "users", "info"),
#     dropWidth = "220px"
#   ),
#   verbatimTextOutput(outputId = "res")
# )
# 
# server <- function(input, output, session) {
#   output$res <- renderPrint({
#     input$mydrop
#   })
# }
# 
# shinyApp(ui, server)

## ----color-picker-------------------------------------------------------------
# ui <- fluidPage(
#   tags$h2("Color Picker"),
#   colorPicker(
#     inputId = "col",
#     label = "Choose a color:",
#     choices = scales::brewer_pal(palette = "Dark2")(8),
#     textColor = "white"
#   ),
#   verbatimTextOutput(outputId = "res")
# )
# 
# server <- function(input, output, session) {
#   output$res <- renderPrint({
#     input$col
#   })
# }
# 
# shinyApp(ui, server)

## ----palette-picker-----------------------------------------------------------
# library(scales)
# ui <- fluidPage(
#   tags$h2("Palette Picker"),
#   palettePicker(
#     inputId = "pal",
#     label = "Choose a palette",
#     choices = list(
#       "Viridis" = list(
#         "viridis" = viridis_pal(option = "viridis")(10),
#         "magma" = viridis_pal(option = "magma")(10),
#         "inferno" = viridis_pal(option = "inferno")(10),
#         "plasma" = viridis_pal(option = "plasma")(10),
#         "cividis" = viridis_pal(option = "cividis")(10)
#       ),
#       "Brewer" = list(
#         "Blues" = brewer_pal(palette = "Blues")(8),
#         "Reds" = brewer_pal(palette = "Reds")(8),
#         "Paired" = brewer_pal(palette = "Paired")(8),
#         "Set1" = brewer_pal(palette = "Set1")(8)
#       )
#     ),
#     textColor = c(
#       rep("white", 5), rep("black", 4)
#     )
#   ),
#   verbatimTextOutput(outputId = "res")
# )
# 
# server <- function(input, output, session) {
#   output$res <- renderPrint({
#     input$pal
#   })
# }
# 
# shinyApp(ui, server)

