наблюдать за событиями внутри блестящих модулей не работает - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь внедрить кнопку сброса в мое блестящее приложение, используя этот пример: 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)

Я новичок с модулями, так что естьнаверное, что-то очень очевидное, что мне здесь не хватает.Любые входные данные приветствуются.

...