mirror of
https://github.com/agdamsbo/FreesearchR.git
synced 2025-09-12 09:59:39 +02:00
170 lines
3.9 KiB
Text
170 lines
3.9 KiB
Text
|
% Generated by roxygen2: do not edit by hand
|
||
|
% Please edit documentation in R/validation.R
|
||
|
\name{validation_ui}
|
||
|
\alias{validation_ui}
|
||
|
\alias{validation_server}
|
||
|
\title{Validation module}
|
||
|
\usage{
|
||
|
validation_ui(id, max_height = NULL, ...)
|
||
|
|
||
|
validation_server(id, data)
|
||
|
}
|
||
|
\arguments{
|
||
|
\item{id}{Module's ID.}
|
||
|
|
||
|
\item{max_height}{Maximum height for validation results element, useful if you have many rules.}
|
||
|
|
||
|
\item{...}{Arguments passed to \code{actionButton} or \code{uiOutput} depending on display mode,
|
||
|
you cannot use \code{inputId}/\code{outputId}, \code{label} or \code{icon} (button only).}
|
||
|
|
||
|
\item{data}{a \code{reactive} function returning a \code{data.frame}.}
|
||
|
}
|
||
|
\value{
|
||
|
\itemize{
|
||
|
\item UI: HTML tags that can be included in shiny's UI
|
||
|
\item Server: a \code{list} with two slots:
|
||
|
\itemize{
|
||
|
\item \strong{status}: a \code{reactive} function returning the best status available between \code{"OK"}, \code{"Failed"} or \code{"Error"}.
|
||
|
\item \strong{details}: a \code{reactive} function returning a \code{list} with validation details.
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
\description{
|
||
|
Check that a dataset respect some validation expectations.
|
||
|
}
|
||
|
\examples{
|
||
|
#' Data and analyses validation demo
|
||
|
#'
|
||
|
#' @returns
|
||
|
#' @export
|
||
|
#'
|
||
|
#' @examples
|
||
|
#' \dontrun{
|
||
|
#' validation_demo_app()
|
||
|
#' }
|
||
|
validation_demo_app <- function() {
|
||
|
ui <- shiny::fluidPage(
|
||
|
shiny::tags$h2("Validation"),
|
||
|
IDEAFilter::IDEAFilter_ui("data_filter"),
|
||
|
shiny::br(),
|
||
|
DT::DTOutput("data_final"),
|
||
|
shiny::br(),
|
||
|
validation_ui("validation_demo_2")
|
||
|
)
|
||
|
|
||
|
server <- function(input, output, session) {
|
||
|
rv <- shiny::reactiveValues(
|
||
|
data_original = shiny::reactive(mtcars),
|
||
|
data_filtered = NULL
|
||
|
)
|
||
|
|
||
|
rv_validation <- shiny::reactiveValues(
|
||
|
obs_filter = NULL,
|
||
|
vars_filter = NULL
|
||
|
)
|
||
|
|
||
|
data_filter <- IDEAFilter::IDEAFilter(
|
||
|
id = "data_filter",
|
||
|
data = mtcars,
|
||
|
verbose = TRUE
|
||
|
)
|
||
|
|
||
|
shiny::observeEvent(
|
||
|
data_filter(),
|
||
|
{
|
||
|
rv$data_filtered <- data_filter()
|
||
|
}
|
||
|
)
|
||
|
|
||
|
output$data_final <- DT::renderDT(
|
||
|
data_filter()
|
||
|
)
|
||
|
|
||
|
shiny::observeEvent(
|
||
|
list(
|
||
|
data_filter()
|
||
|
),
|
||
|
{
|
||
|
to_make_validation <- data_filter()
|
||
|
## Validation
|
||
|
if (!is.null(to_make_validation)) {
|
||
|
validation <-
|
||
|
make_validation(
|
||
|
ls = validation_lib("obs_filter"),
|
||
|
list(
|
||
|
x = mtcars,
|
||
|
y = to_make_validation
|
||
|
)
|
||
|
)
|
||
|
|
||
|
rv_validation$vars_filter <- validation
|
||
|
|
||
|
validation_server(id = "validation_demo_2", data = rv_validation$vars_filter)
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
)
|
||
|
|
||
|
# shiny::observeEvent(
|
||
|
# list(
|
||
|
# shiny::reactive(rv_validation$vars_filter)(),
|
||
|
# data_filter()
|
||
|
# ),
|
||
|
# {
|
||
|
# # browser()
|
||
|
# # to_make_alert <- shiny::isolate(rv_validation$vars_filter)
|
||
|
# to_make_alert <- shiny::reactive(rv_validation$vars_filter)()
|
||
|
# if (!is.null(rv_validation$vars_filter)) {
|
||
|
# validation_server(id = "validation_demo_2", data = to_make_alert)
|
||
|
# }
|
||
|
# }
|
||
|
# )
|
||
|
}
|
||
|
shiny::shinyApp(ui, server)
|
||
|
}
|
||
|
|
||
|
|
||
|
#' Title
|
||
|
#'
|
||
|
#' @returns
|
||
|
#' @export
|
||
|
#'
|
||
|
#' @examples
|
||
|
#' validation_nr_demo_app()
|
||
|
validation_nr_demo_app <- function() {
|
||
|
ui <- shiny::fluidPage(
|
||
|
shiny::tags$h2("Validation"),
|
||
|
shiny::br(),
|
||
|
validation_ui("validation_demo_1", max_height = "30px"),
|
||
|
shiny::br(),
|
||
|
validation_ui("validation_demo_2")
|
||
|
)
|
||
|
|
||
|
server <- function(input, output, session) {
|
||
|
df_original <- mtcars
|
||
|
|
||
|
df_obs <- mtcars |> dplyr::filter(mpg > 20)
|
||
|
|
||
|
df_vars <- df_obs[1:6]
|
||
|
|
||
|
val1 <- purrr::map2(
|
||
|
.x = validation_lib()[1],
|
||
|
.y = list(list(x = df_original, y = df_obs)),
|
||
|
make_validation
|
||
|
)
|
||
|
|
||
|
val2 <- make_validation(
|
||
|
ls = validation_lib()[[2]],
|
||
|
list(x = df_original, y = df_vars)
|
||
|
)
|
||
|
|
||
|
validation_server(id = "validation_demo_1", data = val1)
|
||
|
|
||
|
validation_server(id = "validation_demo_2", data = val2)
|
||
|
}
|
||
|
shiny::shinyApp(ui, server)
|
||
|
}
|
||
|
}
|