# 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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.