Я пытаюсь внедрить кнопку сброса в мое блестящее приложение, используя этот пример: https://stackoverflow.com/a/44206615/7306168
Модуль moduleSampleplan
определяет, какой SamplePlan будет использоваться: по умолчанию (загружается с приложением из a.RData) или пользовательский (загруженный из файла), и он предлагает возможность «сбросить» до значения по умолчанию в любое время.
ui.R
sidebar <- dashboardSidebar(
sidebarMenu(id="sbmenu",
menuItem('Sample Plan', tabName='sampleplan')
)
)
body <- dashboardBody(
tabItems(
tabItem(tabName='sampleplan', fluidRow(HTML("<div class='HeaderSection'>Sample Plan</div>"),moduleSampleplanUI("sampleplan")))
)
)
dashboardPage(
dashboardHeader( title=div("PROJECT_NAME"), titleWidth=250),
sidebar,
body
)
server.R
server = function(input, output) {
load("/home/beata.gyorgy/Documents/Projects/SHINY_RSQ/Star/SamplePlan.RData")
source("modules/SPmodule.R")
dataset = list(SamplePlan=SamplePlan)
newsp=list()
newsp <- callModule(moduleSampleplan,"sampleplan",dataset)
}
SPmodule.R
moduleSampleplanUI <- function(id, label = "module Sample Plan") {
ns <- NS(id)
tagList(box(
width=3,
solidHeader=TRUE,
status='warning',
title=div(icon('cog'), div(style='display: inline-block; padding-left: 5px', 'Data selection')),
fileInput(ns("spfile"),"Upload a new Sample Plan", multiple=F),
actionButton('resetSP',"Reset Sample Plan")
)
,
box(
width=6,
solidHeader=TRUE,
status='warning',
title=div(icon('cog'), div(style='display: inline-block; padding-left: 5px', 'Sample table')),
uiOutput(ns('sptable'))
)
)
}
moduleSampleplan <- function(input, output, session, dataset){
uploadstatus <- reactiveValues(action = NULL)
observeEvent(input$spfile, {
uploadstatus$action = 'upload'
})
observeEvent(input$resetSP, {
uploadstatus$action = 'reset'
})
sptable1 <-reactive({
if (is.null(uploadstatus$action) | uploadstatus$action=="reset"){
df <- dataset()$SamplePlan
}
else if (uploadstatus$action=="upload"){
df <- fread(input$spfile$datapath, data.table=F)
} else { df <- dataset()$SamplePlan }
print(df)
return(df)
})
output$sptable <- renderUI({
output$table1 <- DT::renderDataTable({
sptable1()
})
dataTableOutput("table1")
})
rlist = list(sptable=sptable1)
return(rlist)
}
Похоже, ничего не происходит, таблица SamplePlan не отображается ни в приложении, ни с print(df)
Я новичок с модулями, так что естьнаверное, что-то очень очевидное, что мне здесь не хватает.Любые входные данные приветствуются.