Skip to content

Instantly share code, notes, and snippets.

@jeffreyhanson
Created December 9, 2013 00:04
Show Gist options
  • Save jeffreyhanson/7865387 to your computer and use it in GitHub Desktop.
Save jeffreyhanson/7865387 to your computer and use it in GitHub Desktop.
menu bar attempt in r shiny
library(shiny)
getTool <- function(inputId) {
tagList(
tags$head(tags$script(src = "js/navbar.js")),
tags$html(includeHTML('www/navbar.html'))
)
}
<style type="text/css">body { padding-top: 25px;}</style>
<div class="navbar navbar-fixed-top navbar-inverse" id="tool" data-nav-value="data">
<div class="navbar-inner">
<div class="container-fluid">
<a class="brand" href="#" data-value="data">Testing!</a>
<!-- <div class="nav-collapse"> -->
<ul class="nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu1<b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#" data-value="Menu1_Button1">Menu1_Button1</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu2<b class="caret"></b></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#" data-value="Menu2_Button1">Menu2_Button1</a></li>
<li><a href="#" data-value="Menu2_Button2">Menu2_Button2</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu3<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#" data-value="Menu3_Button1">Menu3_Button1</a></li>
<li><a href="#" data-value="Menu3_Button2">Menu3_Button2</a></li>
<li><a href="#" data-value="Menu3_Button3">Menu3_Button3</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
var navbarBinding = new Shiny.InputBinding();
$.extend(navbarBinding, {
find: function(scope) {
return $(scope).find(".navbar");
},
getValue: function(el) {
return $(el).data("nav-value");
},
setValue: function(el, value) {
$(el).text(value);
},
subscribe: function(el, callback) {
$(el).on("click.navbarBinding", "a[data-value]", function(e) {
$(el).data("nav-value", $(e.target).data("value"));
$('.dropdown.open').removeClass('open');
callback();
});
},
unsubscribe: function(el) {
$(el).off(".navbarBinding");
}
});
Shiny.inputBindings.register(navbarBinding, "navbarBinding");
library(shiny)
shinyServer(function(input, output, session) {
val=reactive({
if (!is.null(input$tool)) {return(input$tool)}
else {return("none")}
})
output$char <- renderText({val()})
})
library(shiny)
shinyUI(
pageWithSidebar(
headerPanel('TEST!'),
sidebarPanel(
getTool("tool")
),
mainPanel(
textOutput("char")
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment