I have an app which uses three different modules it works fine. I want to modularize that app too. so that I can use it inside another app. Can I do that if so how?
this is what the app looks like.
# load_libraries ----------------------------------------------------------
library(shiny)
library(RSQLite)
library(shinydashboard)
library(plotly)
library(data.table)
library(lubridate)
library(dbplyr)
library(tidyverse)
library(DBI)
library(crosstalk)
library(RSQLite)
library(DT)
# source_code -------------------------------------------------------------
source('www/Modules/select_data.R')
source('www/Modules/dashboard_module.R')
source('www/Modules/emp_data.R')
# front_end ---------------------------------------------------------------
main_ui <- dashboardPage(dashboardHeader(),
dashboardSidebar(sidebarMenu(
menuItem('MainData', icon = icon('database'),
tabName = 'sql_data_tab'),
menuItem(
'Dashboard',
icon = icon('dashboard'),
tabName = 'dashboard_tab'
),
menuItem(
'Employee',
icon = icon('user'),
tabName = 'employee_tab'
)
)),
dashboardBody(tabItems(
tabItem(
tabName = 'dashboard_tab',
mod_dashboard_ui('dashboardpage')
),
tabItem(tabName = 'sql_data_tab',
mod_select_data_ui('sql')
),
tabItem(tabName = 'employee_tab',
mod_emp_ui('employee')
)
)))
# server ------------------------------------------------------------------
main_server <- function(input, output, session) {
# connect_to_DB -----------------------------------------------------------
sqlite <- reactive({
dbConnect(SQLite(),
'www/main_data.sqlite')
})
# retreive_data -----------------------------------------------------------
fulldata<-callModule(mod_select_data_serve,'sql',sqlite)
# show_dashboard ----------------------------------------------------------
callModule(mod_dashboard_serve,'dashboardpage',sqlite,fulldata)
# show_employee -----------------------------------------------------------
callModule(mod_emp_serve,'employee',sqlite,fulldata)
# dbdisconnect ------------------------------------------------------------
onSessionEnded(function(){
dbDisconnect(sqlite())
})
}
# runapp ------------------------------------------------------------------
shinyApp(main_ui, main_server)