# Module UI
#' @title mod_sales_map_ui and mod_sales_map_server
#' @description A shiny Module.
#'
#' @param id shiny id
#' @param input internal
#' @param output internal
#' @param session internal
#'
#' @rdname mod_sales_map
#'
#' @keywords internal
#' @importFrom leaflet leaflet leafletOptions addProviderTiles fitBounds renderLeaflet leafletOutput addPolygons addScaleBar scaleBarOptions addLegend labelFormat addControl leafletProxy removeShape
#' @importFrom shiny NS tagList fillCol fillRow renderPlot plotOutput observe req HTML
#'
#' @export
mod_sales_map_ui <- function(id){
ns <- NS(id)
tagList(
fillRow(
fillCol(
leafletOutput(ns("guadeloupe")),
HTML("<div></div>"),
leafletOutput(ns("martinique")),
HTML("<div></div>"),
leafletOutput(ns("guyane")),
HTML("<div></div>"),
leafletOutput(ns("reunion")),
HTML("<div></div>"),
leafletOutput(ns("mayotte")),
width = "95%", height = "100%",
flex = c(10, 0.5, 10, 0.5, 10, 0.5, 10, 0.5, 10)),
leafletOutput(ns("metropole")),
height = "100%", width = "100%",
flex = c(1, 3)
)
)
}
# Module Server
#' @rdname mod_sales_map
#' @export
#' @keywords internal
mod_sales_map_server <- function(input, output, session, data, departement, classe_substance, palette_map, palette_legend){
ns <- session$ns
dom <- c("GUADELOUPE", "MARTINIQUE", "GUYANE", "LA REUNION", "MAYOTTE")
select_departement <- function(map, departement) {
leafletProxy(map) %>%
removeShape(layerId = "selected") %>%
addPolygons(data = filter(data,
departement %in% departement()),
fill = FALSE, fillOpacity = 0, fillColor = NULL,
weight = 5,
color = "#FFFF00", opacity = 1,
layerId = "selected")
}
output$metropole <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright",
options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = -5.141276, lat1 = 42.332755,
lng2 = 12, lat2 = 51.088991) %>%
addLegend(title = "Evolution annuelle<br>(% par an)",
pal = palette_legend[[classe_substance()]],
values = seq(from = -1 * max(abs(filter(data, classification %in% classe_substance())$pente), na.rm = TRUE),
to = max(abs(filter(data, classification %in% classe_substance())$pente), na.rm = TRUE),
by = 1),
labFormat = labelFormat(transform = function(x) sort(round(x), decreasing = TRUE)),
opacity = 1)
})
observe({
req(departement)
select_departement("metropole", departement)
})
output$guadeloupe <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE,
attributionControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, departement %in% dom,
classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright", options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = -61.80976, lat1 = 15.83201,
lng2 = -61.00037, lat2 = 16.51447)
})
observe({
req(departement)
select_departement("guadeloupe", departement)
})
output$martinique <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE,
attributionControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, departement %in% dom,
classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright", options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = -61.22908, lat1 = 14.38870,
lng2 = -60.80958, lat2 = 14.87870)
})
observe({
req(departement)
select_departement("martinique", departement)
})
output$guyane <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE,
attributionControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, departement %in% dom,
classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright", options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = -54.602780, lat1 = 2.112222,
lng2 = -51.634614, lat2 = 5.750711)
})
observe({
req(departement)
select_departement("guyane", departement)
})
output$reunion <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE,
attributionControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, departement %in% dom,
classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright", options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = 55.21643, lat1 = -21.38973,
lng2 = 55.83669, lat2 = -20.87171)
})
observe({
req(departement)
select_departement("reunion", departement)
})
output$mayotte <- renderLeaflet({
leaflet(options = leafletOptions(zoomControl = FALSE,
attributionControl = FALSE)) %>%
addProviderTiles(provider = "CartoDB.PositronNoLabels") %>%
addPolygons(data = filter(data, departement %in% dom,
classification %in% classe_substance()),
fillColor = ~palette_map[[classe_substance()]](pente),
layerId = ~departement,
weight = 1, fillOpacity = 1,
label = ~ label) %>%
addScaleBar(position = "bottomright", options = scaleBarOptions(imperial = FALSE)) %>%
fitBounds(lng1 = 45.01833, lat1 = -13.02101,
lng2 = 45.29999, lat2 = -12.63659)
})
observe({
req(departement)
select_departement("mayotte", departement)
})
}
## To be copied in the UI
# mod_sales_map_ui("sales_map_ui_1")
## To be copied in the server
# callModule(mod_sales_map_server, "sales_map_ui_1")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.