Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@rpodcast
Last active November 4, 2019 14:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rpodcast/6c33ee09a16d55569c562f7aa3951088 to your computer and use it in GitHub Desktop.
Save rpodcast/6c33ee09a16d55569c562f7aa3951088 to your computer and use it in GitHub Desktop.
Shiny modules and custom SVG javascript

This app requires the shiny and xml2 packages. Run the gist interactively with the following:

shiny::runGist('6c33ee09a16d55569c562f7aa3951088')
library(shiny)
library(xml2)
mod_image_ui <- function(id) {
ns <- NS(id)
tagList(
fluidRow(
column(
width = 6,
htmlOutput(ns("image_render"))
),
column(
width = 6,
verbatimTextOutput(ns("debugging"))
)
)
)
}
mod_image_server <- function(input, output, session) {
output$image_render <- renderUI({
includeHTML("image.svg")
})
output$debugging <- renderPrint({
ns <- session$ns
input[['region_clicked']]
})
}
ui <- fluidPage(
mod_image_ui("mod1")
)
server <- function(input, output, session) {
callModule(mod_image_server, "mod1")
}
shinyApp(ui, server)
Display the source blob
Display the rendered blob
Raw
<svg
width="480"
height="320"
viewBox="0 0 600 400"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<script type="text/JavaScript">
<![CDATA[
function showRegionID(param) {
Shiny.onInputChange("mod1-region_clicked", param);
console.log("registered click");
//alert("region ID is: "+ param);
}
]]>
</script>
<title>Amethyst</title>
<defs>
<linearGradient x1="29.268114%" y1="15.2524038%" x2="70.8889394%" y2="74.6384215%" id="linearGradient-1">
<stop stop-color="#D123C2" offset="0%"></stop>
<stop stop-color="#640CB2" offset="100%"></stop>
</linearGradient>
</defs>
<a xlink:href="#" onClick="showRegionID('my_id')" cursor="pointer" pointer-events="all">
<path d="M109.703125,155 L255.71875,310.859375 L185.40625,155 L109.703125,155 Z M300.015625,335.9375 L381.8125,155 L218.21875,155 L300.015625,335.9375 Z M186.109375,125 L233.921875,35 L172.515625,35 L105.015625,125 L186.109375,125 Z M344.3125,310.859375 L490.328125,155 L414.625,155 L344.3125,310.859375 Z M220.09375,125 L379.9375,125 L332.125,35 L267.90625,35 L220.09375,125 Z M413.921875,125 L495.015625,125 L427.515625,35 L366.109375,35 L413.921875,125 Z M446.96875,11.09375 L536.96875,131.09375 C539.156261,133.906264 540.171876,137.148419 540.015625,140.820313 C539.859374,144.492206 538.531263,147.656237 536.03125,150.3125 L311.03125,390.3125 C308.218736,393.437516 304.546898,395 300.015625,395 C295.484353,395 291.812514,393.437516 289,390.3125 L64.0000003,150.3125 C61.4999878,147.656237 60.1718761,144.492206 60.0156253,140.820313 C59.8593745,137.148419 60.8749893,133.906264 63.0625003,131.09375 L153.0625,11.09375 C155.875014,7.03122969 159.859349,5 165.015625,5 L435.015625,5 C440.171901,5 444.156236,7.03122969 446.96875,11.09375 Z" id="amethyst" fill="url(#linearGradient-1)" />
<rect x="0" y="0" width="100%" height="100%" fill="none" />
</a>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment