Description Usage Arguments Note Examples
Used in Shiny server
it will record all inputs and
output changes and errors that occurs through an output.
1 2 3 4 5 6 7 8 9 10 |
storage_mode |
Storage mode to use : |
exclude_input_regex |
Regular expression to exclude inputs from tracking. |
exclude_input_id |
Vector of |
on_unload |
Logical, save log when user close the browser window or tab,
if |
exclude_users |
Character vectors of user for whom it is not necessary to save the log. |
get_user |
A |
dependencies |
Load dependencies. |
session |
The shiny session. |
The following input
s will be accessible in the server:
- .shinylogs_lastInput : last input
used by the user
- .shinylogs_input : all input
s send from the browser to the server
- .shinylogs_error : all errors generated by output
s elements
- .shinylogs_output : all output
s generated from the server
- .shinylogs_browserData : information about the browser where application is displayed.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | # Save logs on disk ----------------------------------
if (interactive()) {
# temporary directory for writing logs
tmp <- tempdir()
# when app stop,
# navigate to the directory containing logs
onStop(function() {
browseURL(url = tmp)
})
# Classic Iris clustering with Shiny
ui <- fluidPage(
headerPanel("Iris k-means clustering"),
sidebarLayout(
sidebarPanel(
selectInput(
inputId = "xcol",
label = "X Variable",
choices = names(iris)
),
selectInput(
inputId = "ycol",
label = "Y Variable",
choices = names(iris),
selected = names(iris)[[2]]
),
numericInput(
inputId = "clusters",
label = "Cluster count",
value = 3,
min = 1,
max = 9
)
),
mainPanel(
plotOutput("plot1")
)
)
)
server <- function(input, output, session) {
# Store JSON with logs in the temp dir
track_usage(
storage_mode = store_json(path = tmp)
)
# classic server logic
selectedData <- reactive({
iris[, c(input$xcol, input$ycol)]
})
clusters <- reactive({
kmeans(selectedData(), input$clusters)
})
output$plot1 <- renderPlot({
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
"#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))
par(mar = c(5.1, 4.1, 0, 1))
plot(selectedData(),
col = clusters()$cluster,
pch = 20, cex = 3)
points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
})
}
shinyApp(ui, server)
}
# Logs in console & special inputs ------------------------
if (interactive()) {
library(shiny)
library(shinylogs)
ui <- fluidPage(
tags$h2("Record inputs change"),
fluidRow(
column(
width = 3,
selectInput(
inputId = "select",
label = "Select input",
choices = month.name
),
numericInput(
inputId = "numeric",
label = "Numerci input",
value = 4,
min = 0, max = 20
),
checkboxGroupInput(
inputId = "checkboxGroup",
label = "Checkbox group input",
choices = LETTERS[1:5]
),
sliderInput(
inputId = "slider",
label = "Slider input",
min = 0, max = 100, value = 50
)
),
column(
width = 9,
tags$b("Last input triggered:"),
verbatimTextOutput(outputId = "last_input"),
tags$b("All inputs:"),
verbatimTextOutput(outputId = "all_inputs")
)
)
)
server <- function(input, output, session) {
# dont store on disk, just show in R console
track_usage(
storage_mode = store_null()
)
# last input triggered
output$last_input <- renderPrint({
input$.shinylogs_lastInput
})
# all inputs that have changed
output$all_inputs <- renderPrint({
input$.shinylogs_input
})
}
shinyApp(ui, server)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.