mirror of
https://github.com/rstudio/shiny.git
synced 2026-02-05 04:05:06 -05:00
137 lines
5.5 KiB
R
137 lines
5.5 KiB
R
#' Create an object representing click options
|
|
#'
|
|
#' This generates an object representing click options, to be passed as the
|
|
#' \code{click} argument of \code{\link{imageOutput}} or
|
|
#' \code{\link{plotOutput}}.
|
|
#'
|
|
#' @param id Input value name. For example, if the value is \code{"plot_click"},
|
|
#' then the click coordinates will be available as \code{input$plot_click}.
|
|
#' @param clip Should the click area be clipped to the plotting area? If FALSE,
|
|
#' then the server will receive click events even when the mouse is outside
|
|
#' the plotting area, as long as it is still inside the image.
|
|
#' @export
|
|
clickOpts <- function(id = NULL, clip = TRUE) {
|
|
if (is.null(id))
|
|
stop("id must not be NULL")
|
|
|
|
list(
|
|
id = id,
|
|
clip = clip
|
|
)
|
|
}
|
|
|
|
|
|
#' Create an object representing double-click options
|
|
#'
|
|
#' This generates an object representing dobule-click options, to be passed as
|
|
#' the \code{dblclick} argument of \code{\link{imageOutput}} or
|
|
#' \code{\link{plotOutput}}.
|
|
#'
|
|
#' @param id Input value name. For example, if the value is
|
|
#' \code{"plot_dblclick"}, then the click coordinates will be available as
|
|
#' \code{input$plot_dblclick}.
|
|
#' @param clip Should the click area be clipped to the plotting area? If FALSE,
|
|
#' then the server will receive double-click events even when the mouse is
|
|
#' outside the plotting area, as long as it is still inside the image.
|
|
#' @param delay Maximum delay (in ms) between a pair clicks for them to be
|
|
#' counted as a double-click.
|
|
#' @export
|
|
dblclickOpts <- function(id = NULL, clip = TRUE, delay = 400) {
|
|
if (is.null(id))
|
|
stop("id must not be NULL")
|
|
|
|
list(
|
|
id = id,
|
|
clip = clip,
|
|
delay = delay
|
|
)
|
|
}
|
|
|
|
#' Create an object representing hover options
|
|
#'
|
|
#' This generates an object representing hovering options, to be passed as the
|
|
#' \code{hover} argument of \code{\link{imageOutput}} or
|
|
#' \code{\link{plotOutput}}.
|
|
#'
|
|
#' @param id Input value name. For example, if the value is \code{"plot_hover"},
|
|
#' then the hover coordinates will be available as \code{input$plot_hover}.
|
|
#' @param delay How long to delay (in milliseconds) when debouncing or
|
|
#' throttling, before sending the mouse location to the server.
|
|
#' @param delayType The type of algorithm for limiting the number of hover
|
|
#' events. Use \code{"throttle"} to limit the number of hover events to one
|
|
#' every \code{delay} milliseconds. Use \code{"debounce"} to suspend events
|
|
#' while the cursor is moving, and wait until the cursor has been at rest for
|
|
#' \code{delay} milliseconds before sending an event.
|
|
#' @param clip Should the hover area be clipped to the plotting area? If FALSE,
|
|
#' then the server will receive hover events even when the mouse is outside
|
|
#' the plotting area, as long as it is still inside the image.
|
|
#' @param nullOutside If \code{TRUE} (the default), the value will be set to
|
|
#' \code{NULL} when the mouse exits the plotting area. If \code{FALSE}, the
|
|
#' value will stop changing when the cursor exits the plotting area.
|
|
#' @export
|
|
hoverOpts <- function(id = NULL, delay = 300,
|
|
delayType = c("debounce", "throttle"), clip = TRUE,
|
|
nullOutside = TRUE) {
|
|
if (is.null(id))
|
|
stop("id must not be NULL")
|
|
|
|
list(
|
|
id = id,
|
|
delay = delay,
|
|
delayType = match.arg(delayType),
|
|
clip = clip,
|
|
nullOutside = nullOutside
|
|
)
|
|
}
|
|
|
|
#' Create an object representing brushing options
|
|
#'
|
|
#' This generates an object representing brushing options, to be passed as the
|
|
#' \code{brush} argument of \code{\link{imageOutput}} or
|
|
#' \code{\link{plotOutput}}.
|
|
#'
|
|
#' @param id Input value name. For example, if the value is \code{"plot_brush"},
|
|
#' then the coordinates will be available as \code{input$plot_brush}.
|
|
#' @param fill Fill color of the brush.
|
|
#' @param stroke Outline color of the brush.
|
|
#' @param opacity Opacity of the brush
|
|
#' @param delay How long to delay (in milliseconds) when debouncing or
|
|
#' throttling, before sending the brush data to the server.
|
|
#' @param delayType The type of algorithm for limiting the number of brush
|
|
#' events. Use \code{"throttle"} to limit the number of brush events to one
|
|
#' every \code{delay} milliseconds. Use \code{"debounce"} to suspend events
|
|
#' while the cursor is moving, and wait until the cursor has been at rest for
|
|
#' \code{delay} milliseconds before sending an event.
|
|
#' @param clip Should the brush area be clipped to the plotting area? If FALSE,
|
|
#' then the user will be able to brush outside the plotting area, as long as
|
|
#' it is still inside the image.
|
|
#' @param direction The direction for brushing. If \code{"xy"}, the brush can be
|
|
#' drawn and moved in both x and y directions. If \code{"x"}, or \code{"y"},
|
|
#' the brush wil work horizontally or vertically.
|
|
#' @param resetOnNew When a new image is sent to the browser (via
|
|
#' \code{\link{renderImage}}), should the brush be reset? The default,
|
|
#' \code{FALSE}, is useful if you want to update the plot while keeping the
|
|
#' brush. Using \code{TRUE} is useful if you want to clear the brush whenever
|
|
#' the plot is updated.
|
|
#' @export
|
|
brushOpts <- function(id = NULL, fill = "#9cf", stroke = "#036",
|
|
opacity = 0.25, delay = 300,
|
|
delayType = c("debounce", "throttle"), clip = TRUE,
|
|
direction = c("xy", "x", "y"),
|
|
resetOnNew = FALSE) {
|
|
if (is.null(id))
|
|
stop("id must not be NULL")
|
|
|
|
list(
|
|
id = id,
|
|
fill = fill,
|
|
stroke = stroke,
|
|
opacity = opacity,
|
|
delay = delay,
|
|
delayType = match.arg(delayType),
|
|
clip = clip,
|
|
direction = match.arg(direction),
|
|
resetOnNew = resetOnNew
|
|
)
|
|
}
|