.onLoad <- function(...) {
# TODO: link portal_env to appropriate parts
# TODO: tidy ??
# when package is loaded, create new environment to store needed variables
portal_env <- rlang::new_environment(parent = emptyenv())
highcharter_opts <- getOption("highcharter.chart")
highcharter_opts$lang <- list(
noData = paste("<b>No data available - the API appears to be down.",
"Sorry for the inconvenience :)</b>")
)
highcharter_opts$noData <- list(
useHTML = TRUE,
position = list(align = "center", verticalAlign = "middle")
)
options(useFancyQuotes = FALSE, # for sQuote() function
scipen = 999,
highcharter.chart = highcharter_opts)
CONFIG <- read_config_file()
assign("CONFIG", CONFIG, envir = portal_env)
indicator_definitions_raw <- jsonlite::read_json(CONFIG$indicator_definitions)
indicator_definitions <- list()
for (item in indicator_definitions_raw) {
check_indicator_definition(item)
if (is.null(item$disabled) || !item$disabled) {
key <- paste(item$class, item$type, item$indicator_name, sep = "_")
if (key %in% names(indicator_definitions)) {
stop(
paste(
DUPLICATE_INDICATOR_ERROR,
item$class,
item$type,
item$indicator_name
)
)
} else {
indicator_definitions[[key]] <- item
}
}
}
assign("indicator_definitions", indicator_definitions, envir = portal_env)
INDICATOR_CLASSES <<- get_class_names(indicator_definitions)
assign("INDICATOR_CLASSES", INDICATOR_CLASSES, envir = portal_env)
DOWNLOADABLE_INDICATORS <<- names(indicator_definitions)[
as.vector(sapply(indicator_definitions, function(x) (!is.null(x$download) && x$download)))
]
assign("DOWNLOADABLE_INDICATORS", DOWNLOADABLE_INDICATORS, envir = portal_env)
if (!is.null(CONFIG$production) & !CONFIG$production) {
warnings(DEV_MODE_WARNING)
DATA_STORE <- load_data(CONFIG)
} else if (!is.null(CONFIG$data_store_filename)) {
DATA_STORE <<- readRDS(CONFIG$data_store_filename)
} else {
DATA_STORE <<- NULL
}
assign("DATA_STORE", DATA_STORE, envir = portal_env)
tabs <- list()
tabs[["title"]] <- ""
for (i in 2:(length(INDICATOR_CLASSES) + 2)) {
tabs[[i]] <- get_tab_panel(INDICATOR_CLASSES, i - 1)
}
assign("tabs", tabs, envir = portal_env)
if (!is.null(CONFIG$tag_manager_html)) {
tag_manager_html <<- includeHTML("www/tag_manager.html")
} else {
print("No tag manager set.")
tag_manager_html <<- "<div></div>"
}
assign("tag_manager_html", tag_manager_html, envir = portal_env)
if (!is.null(CONFIG$filter_dictionary_definitions)) {
filter_dictionary_raw <- jsonlite::read_json(CONFIG$filter_dictionary_definitions)
FILTER_DICTIONARY <<- list()
for (item in filter_dictionary_raw) {
FILTER_DICTIONARY[[item$name]] <<- item
}
}
assign("FILTER_DICTIONARY", FILTER_DICTIONARY, envir = portal_env)
if(!is.null(CONFIG$stats_odata_api$environment)){
ODATA_URL <<- CONFIG$stats_odata_api[[CONFIG$stats_odata_api$environment]]$odata_url
ODATA_TOKEN <<- CONFIG$stats_odata_api[[CONFIG$stats_odata_api$environment]]$odata_token
}
assign("ODATA_URL", ODATA_URL, envir = portal_env)
assign("ODATA_TOKEN", ODATA_TOKEN, envir = portal_env)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.