R/app_module_di_plot.R

Defines functions ie_di_plot_server ie_di_plot_ui

Documented in ie_di_plot_server ie_di_plot_ui

#' Dual inlet plot module
#'
#' A plot view for dual inlet cycle data, wired to a [ie_file_server()]: it plots the
#' selection-filtered aggregated `cycles` with
#' [isoreader2::ir_plot_dual_inlet()], with unit, species/mass, legend, zoom and
#' PDF-download controls. Pair `ie_di_plot_ui()` and `ie_di_plot_server()` on one `id`.
#'
#' @inheritParams ie_metadata_server
#' @param file the [ie_file_server()] handle
#' @return `ie_di_plot_ui()` returns a UI element; `ie_di_plot_server()` returns a
#'   list with a `get_code` generator for the code server (see [ie_code_server()])
#' @seealso [ie_file_server()], [ie_di_metadata_server()]
#' @name ie_di_plot
#' @examples
#' if (interactive()) {
#'   library(shiny)
#'   iso <-
#'     isoreader2::ir_examples_folder() |>
#'     isoreader2::ir_find_isofiles() |>
#'     isoreader2::ir_read_isofiles()
#'
#'   ui <- ie_type_explorer_ui("meta", ie_di_plot_ui("di"))
#'   server <- function(input, output, session) {
#'     file <- ie_file_server("files", get_isofiles = reactive(iso))
#'     ie_di_metadata_server("meta", file)
#'     ie_di_plot_server("di", file)
#'   }
#'   shinyApp(ui, server)
#' }
#' @export
ie_di_plot_ui <- function(id) {
  data_plot_view_ui(id)
}

#' @rdname ie_di_plot
#' @export
ie_di_plot_server <- function(id, file) {
  setup_data_plot(
    id,
    get_data = file$get_aggregated_di_data,
    get_units = file$get_units,
    set_units = file$set_units,
    dataset_key = "cycles",
    plot_fn = isoreader2::ir_plot_dual_inlet,
    plot_fn_name = "ir_plot_dual_inlet",
    no_data_message = "No dual inlet cycle data selected/available.",
    download_basename = "dual_inlet",
    zoom_arg = "cycle_window",
    get_selection = file$get_di_selection,
    get_all_metadata = file$get_di_metadata
  )
}

Try the isoexplorer package in your browser

Any scripts or data that you put into this service are public.

isoexplorer documentation built on Sept. 8, 2026, 1:07 a.m.