From 1d5b751f1130cc9b50f3b6fec7fd55e0e29d911b Mon Sep 17 00:00:00 2001
From: Delaigue Olivier <olivier.delaigue@irstea.priv>
Date: Wed, 8 Aug 2018 15:56:57 +0200
Subject: [PATCH] v0.2.3.0 now depends on dygraphs 1.1.1.6 (previous embeded
 dygraphs functions have been removed)

---
 DESCRIPTION              |   4 +-
 NAMESPACE                |  14 --
 NEWS                     |   8 +-
 R/Utils.R                |   8 --
 R/dyplot.default.R       |   2 +-
 R/zz_dygraphs_group.R    | 274 ---------------------------------------
 R/zz_dygraphs_plotters.R | 143 --------------------
 R/zz_dygraphs_series.R   |  45 -------
 R/zz_dygraphs_utils.R    |  47 -------
 inst/ShinyGR/server.R    |   6 +-
 10 files changed, 13 insertions(+), 538 deletions(-)
 delete mode 100644 R/zz_dygraphs_group.R
 delete mode 100644 R/zz_dygraphs_plotters.R
 delete mode 100644 R/zz_dygraphs_series.R
 delete mode 100644 R/zz_dygraphs_utils.R

diff --git a/DESCRIPTION b/DESCRIPTION
index a25d4e9..8da9838 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,11 +1,11 @@
 Package: airGRteaching
 Type: Package
 Title: Teaching Hydrological Modelling with the GR Rainfall-Runoff Models ('Shiny' Interface Included)
-Version: 0.2.2.5
+Version: 0.2.3.0
 Date: 2018-05-22
 Authors@R: c(person("Olivier", "Delaigue", role = c("aut", "cre"), email = "airGR@irstea.fr"), person("Laurent", "Coron", role = c("aut")), person("Pierre", "Brigode", role = c("aut")), person("Guillaume", "Thirel", role = c("ctb")))
 Depends: airGR (>= 1.0.9.43)
-Imports: dygraphs (>= 1.1.1.4), htmlwidgets (>= 1.0), markdown, plotrix, shiny, shinyjs, xts
+Imports: dygraphs (>= 1.1.1.6), htmlwidgets (>= 1.2), markdown, plotrix, shiny (>= 1.1.0), shinyjs (>= 1.0), xts
 Suggests: knitr
 Description: Add-on package to the 'airGR' package that simplifies its use and is aimed at being used for teaching hydrology. The package provides 1) three functions that allow to complete very simply a hydrological modelling exercise 2) plotting functions to help students to explore observed data and to interpret the results of calibration and simulation of the GR ('Génie rural') models 3) a 'Shiny' graphical interface that allows for displaying the impact of model parameters on hydrographs and models internal variables.
 License: GPL-2
diff --git a/NAMESPACE b/NAMESPACE
index 33c9ae1..08779a2 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -34,20 +34,6 @@ export(.TypeModelGR)
 
 
 
-#####################################
-##               Export dygraphs   ##
-#####################################
-export(.computeYaxisRange)
-export(.dyBarSeries)
-export(.dyGroup)
-export(.dyStackedBarGroup)
-export(.dyStackedRibbonGroup)
-export(.mergeLists)
-export(.resolveStemPlot)
-export(.resolveStrokePattern)
-
-
-
 #####################################
 ##               Import            ##
 #####################################
diff --git a/NEWS b/NEWS
index 0dae5d9..9d4d374 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,14 @@
 ############# Release History of the airGRteaching Package
 
 
-## 0.2.2.5 Release Notes (2018-05-22)
+## 0.2.3.0 Release Notes (2018-08-08)
 
+	CRAN-compatibility updates
+		- now depends on the latest version (1.1.1.6) of the dygraphs package from CRAN (embeded dygraphs functions have been removed)
+		
+	Major user-visible changes
+		- the article reference is updated
+		
 
 ## 0.2.2.2 Release Notes (2018-03-21)
 
diff --git a/R/Utils.R b/R/Utils.R
index 9f01eaa..77a9b8c 100644
--- a/R/Utils.R
+++ b/R/Utils.R
@@ -1,11 +1,3 @@
-## =================================================================================
-## function to generate a message to reinstall the dygraph package
-## =================================================================================
-
-
-
-
-
 ## =================================================================================
 ## commands to avoid warnings during package checking when global variables are used
 ## =================================================================================
diff --git a/R/dyplot.default.R b/R/dyplot.default.R
index a040bc1..a56aae6 100644
--- a/R/dyplot.default.R
+++ b/R/dyplot.default.R
@@ -86,7 +86,7 @@ dyplot.default <- function(x, Qsup = NULL, Qsup.name = "Qsup",
   dg <- dygraphs::dySeries(dygraph = dg, name = "Qobs", axis = 'y' , color = col.Q[1L], drawPoints = TRUE)
   dg <- dygraphs::dySeries(dygraph = dg, name = "Qsim", axis = 'y' , color = col.Q[2L])
   dg <- dygraphs::dySeries(dygraph = dg, name = "Qsup", axis = 'y' , color = col.Q[3L], label = Qsup.name, strokePattern = "dashed")
-  dg <- .dyStackedBarGroup(dygraph = dg, name = rev(grep("^P", colnames(data.xts), value = TRUE)), axis = "y2", color = (col.Precip))
+  dg <- dygraphs::dyStackedBarGroup(dygraph = dg, name = rev(grep("^P", colnames(data.xts), value = TRUE)), axis = "y2", color = (col.Precip))
   dg <- dygraphs::dyAxis(dygraph = dg, name = "y" , label = ylab[1L],
                          valueRange = range(data.xts[, grep("^Q", colnames(data.xts))], na.rm = TRUE) * c(0.01, 1.59))
   dg <- dygraphs::dyAxis(dygraph = dg, name = "y2", label = ylab[2L], independentTicks = FALSE,
diff --git a/R/zz_dygraphs_group.R b/R/zz_dygraphs_group.R
deleted file mode 100644
index 5f35d5e..0000000
--- a/R/zz_dygraphs_group.R
+++ /dev/null
@@ -1,274 +0,0 @@
-## Code from the last version of the 'dygraphs' package that is only available on GitHub
-## Will be removed from airGRteaching when the last ‘dygraphs’ version will be available on the CRAN
-## https://github.com/rstudio/dygraphs
-## License MIT
-## RStudio Team
-## Many thanks to J.J. Allaire and Petr Shevtsov
-
-
-
-
-#' dygraph series group
-#' 
-#' Add a data series group to a dygraph plot. Note that options will use the default 
-#' global setting (as determined by \code{\link{dyOptions}}) when not specified 
-#' explicitly. Importantly, any dySeries options passed can be passed as a vector of values 
-#' and will be replicated across all series named as part of the group. If arguments differ in
-#' length than the number of series named, then the argument vector will be 
-#' cycled across the named series.
-#' 
-#' NOTE: dyGroup will turn off \code{stackedGraph}, as the option will calculated cumulatives using
-#' all series in the underlying dygraph, not just a subset.
-#' 
-#' The dyGroup function can also replicated similar arguments across multiple series, or 
-#' be used to apply a grouped custom plotter - i.e., multi-column plotter - to a subset of the
-#' dygraph data series.
-#' 
-#' @inheritParams dySeries
-#' @inheritParams dyOptions
-#'   
-#' @param dygraph Dygraph to add a series definition to
-#' @param name character vector of the series within data set. If no name is specified then 
-#'   series are bound to implicitly based on their order within the underlying 
-#'   time series object. This parameter can also be a character vector of length
-#'   3 that specifies a set of input column names to use as the lower, value,
-#'   and upper for a series with a shaded bar drawn around it.
-#' @param label Labels to display for series (uses name if no label defined)
-#' @param color Colors for series. These can be of the form "#AABBCC" or 
-#'   "rgb(255,100,200)" or "yellow", etc. Note that if you specify a custom 
-#'   color for one series then you must specify one for all series. If not 
-#'   specified then the global colors option (typically based on equally-spaced 
-#'   points around a color wheel). Note also that global and per-series color 
-#'   specification cannot be mixed.
-#' @param axis Y-axis to associate the series with ("y" or "y2")
-#' @param stepPlot When set, display the graph as a step plot instead of a line 
-#'   plot.
-#' @param stemPlot When set, display the graph as a stem plot instead of a line
-#'   plot.
-#' @param fillGraph Should the area underneath the graph be filled? This option 
-#'   is not compatible with error bars.
-#' @param drawPoints Draw a small dot at each point, in addition to a line going
-#'   through the point. This makes the individual data points easier to see, but
-#'   can increase visual clutter in the chart.
-#' @param pointSize The size of the dot to draw on each point in pixels. A dot 
-#'   is always drawn when a point is "isolated", i.e. there is a missing point 
-#'   on either side of it. This also controls the size of those dots.
-#' @param pointShape The shape of the dot to draw. Can be one of the following:
-#'   "dot" (default), "triangle", "square", "diamond", "pentagon", "hexagon",
-#'   "circle", "star", "plus" or "ex".
-#' @param strokeWidth The width of the lines connecting data points. This can be
-#'   used to increase the contrast or some graphs.
-#' @param strokePattern A predefined stroke pattern type ("dotted", "dashed", or
-#'   "dotdash") or a custom pattern array where the even index is a draw and odd
-#'   is a space in pixels. If \code{NULL} then it draws a solid line. The array 
-#'   should have an even length as any odd length array could be expressed as 
-#'   a smaller even length array.
-#' @param strokeBorderWidth Draw a border around graph lines to make crossing 
-#'   lines more easily distinguishable. Useful for graphs with many lines.
-#' @param strokeBorderColor Color for the line border used if 
-#'   \code{strokeBorderWidth} is set.
-#' 
-#' @param plotter A function which plots the series group. See the 
-#'   \href{http://dygraphs.com/tests/plotters.html}{dygraphs documentation} for 
-#'   additional details on plotting functions.
-#'   
-#' @return Dygraph with additional series
-#'   
-#' @examples 
-#' \dontrun{
-#' library(dygraphs)
-#' 
-#' lungDeaths <- cbind(ldeaths, mdeaths, fdeaths)
-#' 
-#' dygraph(lungDeaths, main = "Deaths from Lung Disease (UK)") %>%
-#'   dySeries("fdeaths", stepPlot = TRUE, color = "red") %>% 
-#'   dyGroup(c("mdeaths", "ldeaths"), drawPoints = TRUE, color = c("blue", "green"))
-#' }
-#' 
-#' @note See the 
-#'   \href{https://rstudio.github.io/dygraphs/gallery-series-options.html}{online
-#'   documentation} for additional details and examples.
-#'   
-#' @export
-.dyGroup <- function(dygraph,
-                     name = NULL, 
-                     label = NULL,
-                     color = NULL,
-                     axis = "y", 
-                     stepPlot = NULL,
-                     stemPlot = NULL,
-                     fillGraph = NULL,
-                     drawPoints = NULL,
-                     pointSize = NULL,
-                     pointShape = NULL,
-                     strokeWidth = NULL,
-                     strokePattern = NULL,
-                     strokeBorderWidth = NULL,
-                     strokeBorderColor = NULL,
-                     plotter = NULL) {
-  
-  
-  # get a reference to the underlying data and labels
-  data <- attr(dygraph$x, "data")
-  labels <- names(data)
-
-  if (length(plotter)>1) message('dyGroup: pass only a single plotter option')
-  
-  
-  # auto-bind name if necessary
-  autobind <- attr(dygraph$x, "autoSeries")
-  if (length(name) == 1) {
-    dygraph<-dySeries(dygraph = dygraph, 
-                      name = name, 
-                      label = label, 
-                      color = color, 
-                      plotter = plotter)
-    return(dygraph)
-  }
-    
-  # Plotter-mod!  Added the plotter != NULL test to keep base capability while
-  # expanding to include group plotters
-  # Get the cols where this series is located and verify that they are
-  # available within the underlying dataset
-  cols <- which(labels %in% name)
-  if (length(cols) != length(name)) {
-    stop("One or more of the specified series were not found. ",
-         "Valid series names are: ", paste(labels[-1], collapse = ", "))
-  }
-  
-  # Data series named here are "consumed" from the automatically generated
-  # list of series (they'll be added back in below)
-  cols <- which(dygraph$x$attrs$labels %in% name)
-  dygraph$x$data <- dygraph$x$data[-c(cols)]
-  dygraph$x$attrs$labels <- dygraph$x$attrs$labels[-c(cols)]
-
-   
-  # MUST turn off native stacking option, as underlying dygraph 
-  # will include custom-plotted points in the stacked calculation
-  if (length(dygraph$x$attrs$stackedGraph)>0) {
-    if (dygraph$x$attrs$stackedGraph) warning(
-      "dyGroup is incompatible with stackedGraph... stackedGraph now FALSE")
-    dygraph$x$attrs$stackedGraph <- FALSE;
-  }
-   
-  # Resolve stemPlot into a custom plotter if necessary
-  plotter <- .resolveStemPlot(stemPlot, plotter)
-  
-  if (!is.null(pointShape))
-    dygraph$x$pointShape <- list()
-   
-  l<-length(name)
-  
-  # add color if specified 
-  if (!is.null(color)) {
-    #grab the names of all named series 
-    names_ <- names(dygraph$x$attrs$series)
-   
-    #grab any colors already set
-    colors_ <- dygraph$x$attrs$colors
-    
-    # if no colors passed thus far, set up the color vector for
-    # the series defined previously
-    if(is.null(colors_)) {
-      colors_ <- vector('character', length(names_))
-    }
-    names(colors_) <- names_
-    
-    for(i in 1:l) colors_[[name[i]]] <- rep(color, length.out = l)[i]
-    
-    # all options must be unnamed vectors
-    names(colors_) <- NULL
-    
-    # attrs$colors <- as.list(c(attrs$colors, color))
-    dygraph$x$attrs$colors <- colors_
-    
-  }
-  
-  # repeat (most of) the steps from dySeries, just in a loop 
-  for (i in 1:l) {
-    # copy attrs for modification
-    attrs <- dygraph$x$attrs
-    
-    # create series object
-    series <- list()
-    series$name <- name[i]
-    
-    # take the passed options and extend to the length of the name vector; it's
-    # up to the User to make sure the vectors are of the desired length
-    suppressWarnings({
-      # for the axis, however, we enforce the same axis across all series named
-      # in the group.  We can't stop the user from changing the axis of one or more
-      # series later, but at least we can control for some mistakes here
-      series$options$axis <- rep(match.arg(axis, c("y", "y2")), 
-                      			 			length.out = l)[1]
-      if(!is.null(stepPlot)) series$options$stepPlot <- rep(
-																	stepPlot, length.out = l)[i]
-      if(!is.null(fillGraph)) series$options$fillGraph <- rep(
-																	fillGraph, length.out = l)[i]
-      if(!is.null(drawPoints)) series$options$drawPoints <- rep(
-																	drawPoints, length.out = l)[i]
-      if(!is.null(pointSize)) series$options$pointSize <- rep(
-																	pointSize, length.out = l)[i]
-      if(!is.null(strokeWidth)) series$options$strokeWidth <- rep(
-																	strokeWidth, length.out = l)[i]
-      if(!is.null(strokePattern)) series$options$strokePattern <- rep(
-																	.resolveStrokePattern(strokePattern), length.out = l)[i]
-      if(!is.null(strokeBorderWidth)) series$options$strokeBorderWidth <- rep(
-																	strokeBorderWidth, length.out = l)[i]
-      if(!is.null(strokeBorderColor)) series$options$strokeBorderColor <- rep(
-																	strokeBorderColor, length.out = l)[i]
-     
-      # one can use this to pass a group plotter or any combination of individual series plotters 
-      series$options$plotter <- htmlwidgets::JS(plotter)
-    })
-    
-    # KEY!  Adding a group designator to aid in group plotters
-    # By concatenating the names provided in the name age, it becomes
-    # a unique identifier than won't be duplicated unless the entire group of names
-    # passed gets re-passed together a second time, which would obviously override
-    # the first set of options
-    series$options$group <- paste0(name, collapse = "")
-  
-    seriesData <- data[[series$name]]
-    
-    # default the label if we need to
-    if (is.null(series$label))
-      series$label <- series$name  
-    
-    # add label
-    attrs$labels <- c(attrs$labels, series$label)
-    
-    # get whatever options might have previously existed for the series, then merge
-    base <- attrs$series[[series$label]]
-	 	series$options <- .mergeLists(base, series$options)
-    
-    # set options
-    attrs$series[[series$label]] <- series$options
-    
-    # set attrs
-    dygraph$x$attrs <- attrs
-    
-    # set point shape
-    if (!is.null(pointShape[i])) {
-      shapes <- c("dot", "triangle", "square", "diamond", "pentagon",
-                  "hexagon", "circle", "star", "plus", "ex")
-      if (!is.element(pointShape[i], shapes)) {
-        stop("Invalid value for pointShape parameter. ",
-             "Should be one of the following: ",
-             "'dot', 'triangle', 'square', 'diamond', 'pentagon', ",
-             "'hexagon', 'circle', 'star', 'plus' or 'ex'")
-      }
-  
-      if (pointShape[i] != "dot") {
-        dygraph$x$pointShape[[series$label]] <- rep(pointShape, length.out = l)
-      }
-    }
-    
-    # add data
-    dygraph$x$data[[length(dygraph$x$data) + 1]] <- seriesData
-  }  
-  
-  # return modified dygraph
-  dygraph
-}
-
diff --git a/R/zz_dygraphs_plotters.R b/R/zz_dygraphs_plotters.R
deleted file mode 100644
index 913b6da..0000000
--- a/R/zz_dygraphs_plotters.R
+++ /dev/null
@@ -1,143 +0,0 @@
-## Code from the last version of the 'dygraphs' package that is only available on GitHub
-## Will be removed from airGRteaching when the last ‘dygraphs’ version will be available on the CRAN
-## https://github.com/rstudio/dygraphs
-## License MIT
-## RStudio Team
-## Many thanks to J.J. Allaire and Petr Shevtsov
-
-
-
-#' @rdname Plotters
-#' @export
-#' 
-.dyStackedBarGroup <- function(dygraph, name, ...) {
-  dots <- list(...)
-  
-  if(length(name) < 2) {
-    dygraph <- do.call(.dyBarSeries, c(list(dygraph = dygraph, name = unlist(name)), dots))
-    return(dygraph)
-  }
-  
-  file <- system.file("plotters/stackedbargroup.js", package = "airGRteaching")
-  plotter_ <- paste0(readLines(file, skipNul = TRUE), collapse = "\n")
-  
-  dygraph <- do.call(.dyGroup, c(list(dygraph = dygraph, name = name, plotter = plotter_), dots))
-  
-  dygraph <- .computeYaxisRange(dygraph, name)
-  dygraph 
-}
-
-
-#' @rdname Plotters
-#' @export
-.dyBarSeries <- function(dygraph, name, ...) {
-  file <- system.file("plotters/barseries.js", package = "airGRteaching")
-  plotter_ <- paste0(readLines(file, skipNul = TRUE), collapse = "\n")
-  
-  dots <- list(...)
-  do.call(dygraphs::dySeries, c(list(dygraph = dygraph, name = name, plotter = plotter_), dots))
-  
-}
-
-
-#' @rdname Plotters
-#' @export
-.dyStackedRibbonGroup <- function(dygraph, name, ...) {
-  dots <- list(...)
-  
-  if(length(name) < 2) {
-    dygraph <- do.call('dyFilledLine', c(list(dygraph = dygraph, name = name), dots))
-    return(dygraph)
-  }
-  
-  file <- system.file("plotters/stackedribbongroup.js", package = "airGRteaching")
-  plotter_ <- paste0(readLines(file, skipNul = TRUE), collapse = "\n")
-  
-  dygraph <- do.call(.dyGroup, c(list(dygraph = dygraph, name = name, plotter = plotter_), dots))
-  
-  dygraph <- .computeYaxisRange(dygraph, name)
-  dygraph 
-}
-
-
-.computeYaxisRange <- function(dygraph, name) { 
-  # most of what happens from here on out is a simplified version of the 
-  # stackPoints and computeYaxis functions in the underlying dygraph package.
-  # Since we can't modify the Yaxis range from within the specialized plotter,
-  # we need to calculate an appropriate valueRange for the group's axis here, then
-  # reconcile that against user-provided ranges and then pass into the widget... this
-  # way we ensure that the newly stacked data (but initially unstacked to the widget) 
-  # doesn't get cutoff by an axis range - computed by the widget - that won't consider
-  # the points stacked
-  attrs <- dygraph$x$attrs
-  
-  data <- attr(dygraph$x, "data")
-  cols <- which(names(data) %in% name)
-  
-  #get all the series, minus the x axis, that are not part of the group
-  data_ <- data[-c(1, cols)]
-  name_ <- names(data)[which(!names(data) %in% name)][-1]
-  
-  #grab the axis for the group, we'll calculate the new range only on this axis  
-  series <- attrs$series[[name[1]]]
-  axisNm <- series$axis
-  if (!is.null(axisNm)) {
-    axis <- attrs$axes[[axisNm]]
-    valueRange <- axis$valueRange
-  } else {
-    axisNm<-"y"
-    axis <- attrs$axes[[axisNm]] <- NULL
-    valueRange <- NULL
-  }
-  
-  if(is.null(valueRange)) {
-    valueRange <- c(0, 0)
-  }
-  
-  # get the group data fields
-  data <- data[cols]
-  
-  for(i in 1:length(data)) {
-    # get the data points
-    points <- data[i][[1]]
-    # fill NAs... we're not saving this data back into the graph, so this is OK
-    is.na(points) <- 0
-    
-    # add to cumulativeList
-    if(!exists('cumulativeYval')) cumulativeYval <- points
-    else cumulativeYval <- cumulativeYval + points
-    # calculate extremes
-    extremes <- range(cumulativeYval)
-  }
-  
-  for(i in 1:length(data_)) {
-    if (length(data_)==0) break
-    
-    # ranges are calcuated separately, so skip those from other axes
-    series_ <- attrs$series[[name_[i]]]
-    if (!is.null(series_$axis) && series_$axis != axisNm) next
-    
-    points <- data_[i][[1]]
-    
-    # fill NAs
-    is.na(points) <- 0
-    
-    # getExtremes
-    extremes_ <- range(points)
-    extremes[1] <- min(extremes[1], extremes_[1])  
-    extremes[2] <- max(extremes[2], extremes_[2])  
-  }
-  
-  valueRange[1] <- min(extremes[1], valueRange[1])
-  valueRange[2] <- max(extremes[2], valueRange[2])
-  
-  # add a little padding since we're hard-setting the range
-  valueRange[2] <- valueRange[2] + 0.05 * abs(valueRange[2] - valueRange[1])
-  
-  axis$options$valueRange <- valueRange
-  attrs$axes[[axisNm]] <- axis$options  
-  
-  # return modified dygraph
-  dygraph$x$attrs <- .mergeLists(dygraph$x$attrs, attrs)
-  return (dygraph)
-}
\ No newline at end of file
diff --git a/R/zz_dygraphs_series.R b/R/zz_dygraphs_series.R
deleted file mode 100644
index 4a75915..0000000
--- a/R/zz_dygraphs_series.R
+++ /dev/null
@@ -1,45 +0,0 @@
-## Code from the last version of the 'dygraphs' package that is only available on GitHub
-## Will be removed from airGRteaching when the last ‘dygraphs’ version will be available on the CRAN
-## https://github.com/rstudio/dygraphs
-## License MIT
-## RStudio Team
-## Many thanks to J.J. Allaire and Petr Shevtsov
-
-
-
-# provide a custom plotter if stemPlot has been specified
-.resolveStemPlot <- function(stemPlot, plotter) {
-  
-  # check for stemPlot argument
-  if (isTRUE(stemPlot)) {
-    
-    # verify that a custom plotter hasn't been specified
-    if (!is.null(plotter)) {
-      stop("stemPlot provides it's own plotter so is incompatible with ",
-           "specifying a custom plotter", call. = FALSE)
-    }
-    
-    # provide custom plotter JS
-    "function stemPlotter(e) { 
-    var ctx = e.drawingContext; 
-    var points = e.points; 
-    var y_bottom = e.dygraph.toDomYCoord(0);
-    ctx.fillStyle = e.color; 
-    for (var i = 0; i < points.length; i++) { 
-    var p = points[i]; 
-    var center_x = p.canvasx;
-    var center_y = p.canvasy; 
-    ctx.beginPath(); 
-    ctx.moveTo(center_x, y_bottom); 
-    ctx.lineTo(center_x, center_y); 
-    ctx.stroke();
-    ctx.beginPath(); 
-    ctx.arc(center_x, center_y, 3, 0, 2*Math.PI); 
-    ctx.stroke();
-    }
-  }"
-  } else {
-    # specified plotter
-    plotter
-}
-  }
\ No newline at end of file
diff --git a/R/zz_dygraphs_utils.R b/R/zz_dygraphs_utils.R
deleted file mode 100644
index 611f520..0000000
--- a/R/zz_dygraphs_utils.R
+++ /dev/null
@@ -1,47 +0,0 @@
-## Code from the last version of the 'dygraphs' package that is only available on GitHub
-## Will be removed from airGRteaching when the last ‘dygraphs’ version will be available on the CRAN
-## https://github.com/rstudio/dygraphs
-## License MIT
-## RStudio Team
-## Many thanks to J.J. Allaire and Petr Shevtsov
-
-
-
-.mergeLists <- function (base_list, overlay_list, recursive = TRUE) {
-  if (length(base_list) == 0)
-    overlay_list
-  else if (length(overlay_list) == 0)
-    base_list
-  else {
-    merged_list <- base_list
-    for (name in names(overlay_list)) {
-      base <- base_list[[name]]
-      overlay <- overlay_list[[name]]
-      if (is.list(base) && is.list(overlay) && recursive)
-        merged_list[[name]] <- .mergeLists(base, overlay)
-      else {
-        merged_list[[name]] <- NULL
-        merged_list <- append(merged_list,
-                              overlay_list[which(names(overlay_list) %in% name)])
-      }
-    }
-    merged_list
-  }
-}
-
-
-.resolveStrokePattern <- function (strokePattern) {
-  if (is.character(strokePattern)) {
-    if (strokePattern == "dotted") 
-      strokePattern <- c(2, 2)
-    else if (strokePattern == "dashed") 
-      strokePattern <- c(7, 3)
-    else if (strokePattern == "dotdash") 
-      strokePattern <- c(7, 2, 2, 2)
-    else if (strokePattern == "solid") 
-      strokePattern <- c(1, 0)
-    else stop("Invalid stroke pattern: valid values are dotted, ", 
-              "dashed, and dotdash")
-  }
-  strokePattern
-}
diff --git a/inst/ShinyGR/server.R b/inst/ShinyGR/server.R
index 71c615d..dcb740d 100644
--- a/inst/ShinyGR/server.R
+++ b/inst/ShinyGR/server.R
@@ -538,8 +538,8 @@ shinyServer(function(input, output, session) {
     dg3 <- dygraphs::dyOptions(dg3, fillAlpha = 1.0,
                                axisLineColor = op$fg, axisLabelColor = op$fg,
                                titleHeight = 10, retainDateWindow = FALSE)
-    dg3 <- .dyStackedRibbonGroup(dg3, name = names,
-                                          color = colors, strokeBorderColor = "black")
+    dg3 <- dygraphs::dyStackedRibbonGroup(dg3, name = names,
+                                color = colors, strokeBorderColor = "black")
     dg3 <- dygraphs::dySeries(dg3, name = "Qobs", fillGraph = FALSE, drawPoints = TRUE, color = op$fg)
     dg3 <- dygraphs::dySeries(dg3, name = "Qsim", fillGraph = FALSE, color = "orangered")
     if (length(getSim()$SIMold) == 2 & input$ShowOldQsim == "Yes") {
@@ -562,7 +562,7 @@ shinyServer(function(input, output, session) {
     
     dg4 <- dygraphs::dygraph(data.xts, group = "mod_diag", ylab = paste0("precip. [mm/", getPrep()$TMGR$TimeUnit, "]"))
     dg4 <- dygraphs::dyOptions(dg4, colors = "#428BCA", drawXAxis = FALSE, retainDateWindow = FALSE)
-    dg4 <- .dyBarSeries(dg4, name = "precip.")
+    dg4 <- dygraphs::dyBarSeries(dg4, name = "precip.")
     dg4 <- dygraphs::dyAxis(dg4, name = "y", valueRange = c(max(data.xts[, "precip."], na.rm = TRUE), -1e-3))
     dg4 <- dygraphs::dyEvent(dg4, input$Event, color = "orangered")
     dg4 <- dygraphs::dyLegend(dg4, show = "onmouseover", width = 225)
-- 
GitLab