R/dynamic_translator.R

Defines functions set_user_default_configs

Documented in set_user_default_configs

#' set_user_default_configs
#' @description translate our dynamically
#' @param target_lang language to translate to
#' @param time_zone time zone
#' @param configs_dir parameters folders
#' @export

set_user_default_configs <- function(target_lang = "en",time_zone = "CET", configs_dir = "../home/configs/"){
  user_configs <- list(target_lang = target_lang, time_zone = time_zone, update_time = Sys.time())
  if(dir.exists(configs_dir) == FALSE){
    dir.create(configs_dir, recursive = TRUE)
  }
  user_name <- strsplit(Sys.getenv("SHINYPROXY_USERNAME"),"@")%>%
    unlist()%>%head(1)%>%gsub("\\.","_",.)
  configs_file <- paste0(configs_dir,user_name,"_fairviewer_configs.json")
  user_configs%>%RJSONIO::toJSON()%>%
    write(file = configs_file)
  return(user_configs)
}


#' load_user_default_configs
#' @param configs_dir configs directory
#' @export
load_user_default_configs <- function(configs_dir =  "../home/configs/"){

  user_name <- strsplit(Sys.getenv("SHINYPROXY_USERNAME"),"@")%>%
    unlist()%>%head(1)%>%gsub("\\.","_",.)
  configs_file <- paste0(configs_dir,user_name,"_fairviewer_configs.json")
  if(file.exists(configs_file)== FALSE)set_user_default_configs()
  user_configs <- configs_file%>%
    RJSONIO::fromJSON()
  return(user_configs)
}


#' app_translator_ui
#' @export

app_translator_ui <- function(id){
  ns <- NS(id)
  fluidPage(
    uiOutput(ns("target_language"))
  )
}

#'app_translator_server
#' @export
app_translator_server <- function(input, output, session){

countries <- c("en","fr","it")
names(countries) <- c("EN","FR","IT")
flags <- c(
    "https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/gb.svg",
    "https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/fr.svg",
    "https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/it.svg"
)

user_default_configs <- reactive({
  load_user_default_configs()
})

output$target_language <- renderUI({
req(user_default_configs())
shinyWidgets::pickerInput(inputId = session$ns("target_language"), label = "Language", multiple = F,
              choices = countries,
              choicesOpt = list(content =
                                  mapply(countries, flags, FUN = function(country, flagUrl) {
                                    HTML(paste(
                                      tags$img(src=flagUrl, width=20, height=15),
                                      country
                                    ))
                                  }, SIMPLIFY = FALSE, USE.NAMES = FALSE)

              ),
              selected = user_default_configs()$target_lang)
})

observeEvent(input$target_language,{
  set_user_default_configs(target_lang = input$target_language)
})
}
Aqvayli06/SaldaeModulesUI documentation built on Feb. 4, 2024, 6:25 a.m.