diff --git a/DESCRIPTION b/DESCRIPTION index 4fa62ff..d637de7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: manipulateWidget Type: Package Title: Add Even More Interactivity to Interactive Charts -Version: 0.8.0 -Date: 2017-10-26 +Version: 0.8.1 +Date: 2017-11-27 Authors@R: c( person("Francois", "Guillem", email = "francois.guillem@rte-france.com", role = c("aut", "cre")), person("RTE", role = "cph"), diff --git a/NEWS.md b/NEWS.md index c92176e..60be59e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ +# manipulateWidget 0.8.1 (2017-11-27) + +## New features +* `mwModule()` now return `controller` value, with possibility to use new `clear()` method + # manipulateWidget 0.8.0 (2017-10-25) ## New features diff --git a/R/controller.R b/R/controller.R index b1d6917..b2b8ea2 100644 --- a/R/controller.R +++ b/R/controller.R @@ -91,6 +91,10 @@ MWController <- setRefClass( invisible(.self) }, + clear = function(){ + rm(list = ls(envir = .self, all.names = TRUE), envir = .self, inherits = TRUE) + }, + setShinySession = function(output, session) { catIfDebug("Set shiny session") session <<- session @@ -155,12 +159,15 @@ MWController <- setRefClass( updateChart = function(chartId = 1) { catIfDebug("Update chart", chartId) - e <- new.env(parent = envs$ind[[chartId]]) # User can set values in expr without messing environments - charts[[chartId]] <<- eval(expr, envir = e) - if (useCombineWidgets) { - charts[[chartId]] <<- combineWidgets(charts[[chartId]]) + if(!is.null(envs)){ + e <- new.env(parent = envs$ind[[chartId]]) # User can set values in expr without messing environments + charts[[chartId]] <<- eval(expr, envir = e) + if (useCombineWidgets) { + charts[[chartId]] <<- combineWidgets(charts[[chartId]]) + } + renderShinyOutput(chartId) } - renderShinyOutput(chartId) + }, returnCharts = function() { @@ -254,6 +261,7 @@ MWController <- setRefClass( getModuleServer = function() { function(input, output, session, ...) { + controller <- .self$clone() reactiveValueList <- list(...) @@ -295,6 +303,8 @@ MWController <- setRefClass( file = con, selfcontained = TRUE) } ) + + return(controller) } } )