--- title: "Date Inputs" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Date Inputs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE, purl = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE, purl = FALSE ) ``` dashboardr provides two date input types for filtering time-based data: **date** (single date picker) and **daterange** (start/end date pair). ```{r setup, purl = FALSE} library(dashboardr) library(dplyr) ``` ## Date Picker Use `type = "date"` to add a single date picker that filters a date column in your data: ```{r, purl = FALSE} page <- create_page("Events") %>% add_input( input_id = "event_date", type = "date", label = "Select Date", filter_var = "date", value = "2020-01-01" ) %>% add_viz( type = "timeline", time_var = "date", y_var = "count" ) ``` The `value` parameter sets the initial date. Dates should be provided in `"YYYY-MM-DD"` format. You can also constrain the date range with `min` and `max`: ```{r, purl = FALSE} page <- create_page("Constrained") %>% add_input( input_id = "start", type = "date", label = "Start Date", filter_var = "date", value = "2020-01-01", min = "2018-01-01", max = "2022-12-31" ) ``` ## Date Range Use `type = "daterange"` to add a pair of date pickers (start and end) that filter data to a date window: ```{r, purl = FALSE} page <- create_page("Time Window") %>% add_input( input_id = "period", type = "daterange", label = "Date Range", filter_var = "date", value = c("2018-01-01", "2021-12-31"), min = "2000-01-01", max = "2022-12-31" ) ``` The `value` parameter takes a two-element character vector: `c(start_date, end_date)`. ## Integration with Cross-Tab Filtering Date inputs work with dashboardr's cross-tab filtering system. When a user changes the date, all charts on the page that use the filtered variable are updated automatically. ```{r, purl = FALSE} data <- data.frame( date = seq(as.Date("2020-01-01"), as.Date("2020-12-31"), by = "month"), sales = round(runif(12, 100, 500)), category = rep(c("A", "B"), 6) ) dashboard <- create_dashboard( title = "Sales Dashboard", data = data ) %>% add_page( create_page("Sales") %>% add_input( input_id = "date_range", type = "daterange", label = "Period", filter_var = "date", value = c("2020-01-01", "2020-12-31") ) %>% add_viz( type = "bar", x_var = "category", title = "Sales by Category", cross_tab_filter_vars = "date" ) %>% add_viz( type = "timeline", time_var = "date", y_var = "sales", title = "Sales Over Time", cross_tab_filter_vars = "date" ) ) ``` ## Requirements Date inputs require `enable_inputs()` to be active on the page. This is added automatically when you use `add_input()` via the page builder, but if you are building pages manually, make sure to include it.