diff --git a/R/controller.R b/R/controller.R index e2516a4..869479d 100644 --- a/R/controller.R +++ b/R/controller.R @@ -72,6 +72,7 @@ MWController <- setRefClass( }, init = function() { + catIfDebug("Controller initialization") if (!initialized) { initialized <<- TRUE inputList$init() @@ -213,9 +214,13 @@ MWController <- setRefClass( ), autoUpdate ) - res$renderFunc <- renderFunc res$charts <- charts + res$outputFunc <- outputFunc + res$renderFunc <- renderFunc res$useCombineWidgets <- useCombineWidgets + res$initialized <- initialized + res$inputList$initialized <- initialized + res }, diff --git a/R/input_list_class.R b/R/input_list_class.R index 7068f67..487866b 100644 --- a/R/input_list_class.R +++ b/R/input_list_class.R @@ -27,10 +27,10 @@ InputList <- setRefClass( inputId <- input$getID() deps <- getDeps(input) for (d in deps$params) { - inputs[[d]]$revDeps <<- c(.self$inputs[[d]]$revDeps, inputId) + inputs[[d]]$revDeps <<- union(.self$inputs[[d]]$revDeps, inputId) } for (d in deps$display) { - inputs[[d]]$displayRevDeps <<- c(.self$inputs[[d]]$displayRevDeps, inputId) + inputs[[d]]$displayRevDeps <<- union(.self$inputs[[d]]$displayRevDeps, inputId) } } }, @@ -57,6 +57,7 @@ InputList <- setRefClass( updateHTMLVisibility = function(name, chartId = 1, inputId = NULL) { if (!is.null(session)) { input <- getInput(name, chartId, inputId) + catIfDebug("Update visibility of", input$getID()) shiny::updateCheckboxInput( session, paste0(input$getID(), "_visible"), @@ -107,7 +108,6 @@ InputList <- setRefClass( updateRevDeps = function(input) { if (!initialized) return() - for (inputId in input$revDeps) { revDepInput <- getInput(inputId = inputId) if(!identical(revDepInput$value, revDepInput$updateValue())) { diff --git a/tests/testthat/test-controller.R b/tests/testthat/test-controller.R index 34b36a6..95142ed 100644 --- a/tests/testthat/test-controller.R +++ b/tests/testthat/test-controller.R @@ -42,6 +42,8 @@ describe("MWController", { controller1$setValue("a", "test") expect_equal(controller1$getValue("a"), "test") expect_equal(controller2$getValue("a"), "a") + expect_true(controller2$initialized) + expect_true(controller2$inputList$initialized) }) it("accesses parameters of a given input", {