R/mod_app_home.R

Defines functions mod_app_home_server mod_app_home_ui

Documented in mod_app_home_server mod_app_home_ui

# Module UI
  
#' @title   mod_app_home_ui and mod_app_home_server
#' @description  A shiny Module
#'
#' @param id shiny id
#' @param input internal
#' @param output internal
#' @param session internal
#'
#' @rdname mod_app_home
#'
#' @keywords internal
#' @export 
#' @importFrom shiny NS tagList 
#' @importFrom shinydashboard box
#' @importFrom DT dataTableOutput
mod_app_home_ui <- function(id){
  
  ns <- NS(id)
  
  navBarPageWrapper <- function(el){tags$div(style="margin-top:-15px; margin-left:-30px; margin-right:-30px", el)}
  
  fluidPage(
    # Nav-Bar
    navBarPageWrapper(tags$nav(class="navbar navbar-default navbar-static-top",
                               fluidPage(
                                 tags$ul(tags$li(actionLink(ns("new-project"), " New project", icon("folder-plus"))), class="nav navbar-nav", style="float:left"),
                                 tags$ul(tags$li(actionLink(ns("import-project"), " Import project", icon("folder-open"))), class="nav navbar-nav", style="float:left")
                                 ))),
    # Projects list
    DT::dataTableOutput("bookmarks")
  )
}
    


# Module Server
    
#' @rdname mod_app_home
#' @export
#' @keywords internal
mod_app_home_server <- function(input, output, session){
  
  ns <- session$ns
  
  # TODO: make bookmark_folder as a parameter
  bookmarking_folder <- system.file(package = "triangle.tlbx")
  
  # Create bookmark file if no one is present bookmark file
  if(!("bookmarks_meta.rds" %in% list.files(bookmarking_folder))){
    bookmarks_meta <- data.frame("name"=c("Empty"),"id"=c(0),"date"=c(0))
    saveRDS(bookmarks_meta, file.path(bookmarking_folder, "bookmarks_meta.rds"))
  }
  
  # TODO: Check if all bookmarks are in shiny_bookmarks folder
  
  # Read bookmark file
  # TODO: reload every 2 or 3 seconds to check if new boorkmarks appeared
  bookmarks_meta <- readRDS(file.path(bookmarking_folder, "bookmarks_meta.rds"))
  
  bookmarks_meta["name"] <- sprintf(paste0("<a href='./?_state_id_=", bookmarks_meta$id, "/#!/app' target='_blank'>", bookmarks_meta$name,"</a>"))
  bookmarks_meta["date"] <- format(as.POSIXct(unlist(bookmarks_meta["date"]), origin="1970-01-01 00:00:00 CEST"), format = "%a %d %b %H:%M:%S")
  names(bookmarks_meta) <- c("Project name", "id", "Date")
  
  # Affiche la liste
  output$bookmarks <- DT::renderDataTable({bookmarks_meta[, c(-2)]}, escape = FALSE)
}
 
MehdiChelh/triangle.tlbx documentation built on May 18, 2020, 3:14 a.m.