#' @title Generate a Wellbeing Report in HTML
#'
#' @description
#' `r lifecycle::badge('experimental')`
#'
#' Generate a static HTML report on wellbeing, taking a custom Wellbeing Query
#' and an Hourly Collaboration query as inputs. See `Required metrics` section
#' for more details on the required inputs for the Wellbeing Query. Note that
#' this function is currently still in experimental/development stage and may
#' experience changes in the near term.
#'
#' @param wbq Data frame. A custom Wellbeing Query dataset based on the Person
#' Query. If certain metrics are missing from the Wellbeing / Person Query,
#' the relevant visual will show up with an indicative message.
#' @param hcq Data frame. An Hourly Collaboration Query dataset.
#' @param hrvar String specifying HR attribute to cut by archetypes. Defaults to
#' `Organization`.
#' @param mingroup Numeric value setting the privacy threshold / minimum group
#' size. Defaults to 5.
#' @param start_hour A character vector specifying starting hours, e.g.
#' `"0900"`. Note that this currently only supports **hourly** increments. If
#' the official hours specifying checking in and 9 AM and checking out at 5
#' PM, then `"0900"` should be supplied here.
#' @param end_hour A character vector specifying starting hours, e.g. `"1700"`.
#' Note that this currently only supports **hourly** increments. If the
#' official hours specifying checking in and 9 AM and checking out at 5 PM,
#' then `"1700"` should be supplied here.
#' @param path Pass the file path and the desired file name, _excluding the file
#' extension_. Defaults to `"wellbeing_report"`.
#'
#' @section Required metrics:
#' A full list of the required metrics are as follows:
#' - `Urgent_meeting_hours`
#' - `IMs_sent_other_level`
#' - `IMs_sent_same_level`
#' - `Emails_sent_other_level`
#' - `Emails_sent_same_level`
#' - `Emails_sent`
#' - `IMs_sent`
#' - `Meeting_hours_intimate_group`
#' - `Meeting_hours_1on1`
#' - `Urgent_email_hours`
#' - `Unscheduled_call_hours`
#' - `Meeting_hours`
#' - `Instant_Message_hours`
#' - `Email_hours`
#' - `Total_focus_hours`
#' - `Weekend_IMs_sent`
#' - `Weekend_emails_sent`
#' - `After_hours_collaboration_hours`
#' - `After_hours_meeting_hours`
#' - `After_hours_instant_messages`
#' - `After_hours_in_unscheduled_calls`
#' - `After_hours_email_hours`
#' - `Collaboration_hours`
#' - `Workweek_span`
#'
#'
#' @export
wellbeing_report <- function(wbq,
hcq,
hrvar = "Organization",
mingroup = 5,
start_hour = "0900",
end_hour = "1700",
path = "wellbeing_report"
){
## Check if dependencies are installed
check_pkg_installed(pkgname = "flexdashboard")
## Generate report from RMarkdown
generate_report2(
wbq = wbq,
hcq = hcq,
hrvar = hrvar,
mingroup = mingroup,
output_file = paste0(path, ".html"),
report_title = "Org Insights | Employee Wellbeing Report",
rmd_dir = system.file("rmd_template/wellbeing/wellbeing_report.rmd", package = "wpa"),
output_format =
flexdashboard::flex_dashboard(orientation = "columns",
vertical_layout = "fill",
css = system.file("rmd_template/wellbeing/custom.css", package = "wpa")),
# Additional arguments to param
start_hour = start_hour,
end_hour = end_hour
)
}