#' Get the Groups Table via the Connect API
#'
#' @description
#' This provides a tibble that relates to all content on Connect. It has the
#' following columns:
#'
#' - email:
#' - username:
#' - first_name:
#' - last_name:
#' - user_role:
#' - group_name:
#'
#' @param conn the Connect server connection details containing the server and
#' API key.
#'
#' @return a tibble
#' @export
get_group_members_tbl <- function(conn = create_connection()) {
group_names_tbl_raw <- connectapi::get_groups(src = conn, limit = Inf)
group_names_tbl_raw %>%
purrr::transpose() %>%
purrr::map_dfr(
~ connectapi::get_group_members(src = conn, guid = .x$guid) %>%
dplyr::mutate(group_name = .x$name)
) %>%
dplyr::select(
-created_time, -updated_time, -active_time,
-confirmed, -locked, -guid
)
}
#' Get a Summary of the Groups Table
#'
#' @param groups_tbl The table that is generated by `get_groups_tbl()`
#'
#' @return a tibble
#'
#' @export
get_groups_summary <- function(group_names_tbl = group_names_tbl, group_members_tbl=group_members_tbl) {
summary_w_members <- group_members_tbl %>%
dplyr::group_by(group_name) %>%
rename("Group Name" = group_name) %>%
dplyr::summarise("Number of Members" = dplyr::n())
groups_w_no_members <- tibble(`Group Name` =
setdiff(group_names_tbl$group_name, group_members_tbl$group_name),
`Number of Members` = 0)
if(nrow(groups_w_no_members) > 0){
groups_summary <- bind_rows(summary_w_members, groups_w_no_members) %>%
arrange(`Group Name`)}else
groups_summary <- summary_w_members
}
#' Make a Summary Table of Group Members
#'
#' @param group_members_tbl Group members table
#' @param group_name Name of group
#'
#' @return a reactable table
#'
#' @export
make_group_members_tbl <- function(
group_members_tbl = group_members_tbl,
group_name = selectedgroup()
) {
if (length(group_name) == 0) {
reactable::reactable(
group_members_tbl, searchable = TRUE, highlight = TRUE,
filterable = TRUE, width = "100%"
)
} else {
reactable::reactable(
dplyr::filter(group_members_tbl, group_name == group_name), searchable = TRUE, highlight = TRUE,
filterable = TRUE, width = "100%"
)
}
}
#' List the names of groups on the Connect server
#'
#' @param x groups_tbl
#'
#' @return a vector
#'
#' @export
get_group_names <- function(x = groups_tbl) {
x %>% dplyr::select(name) %>% unique() %>% dplyr::pull()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.