Ich muss eine Shiny App erstellen, die ein helles und dunkles Thema hat, das die Benutzer in der Benutzeroberfläche auswählen können. Auf der Website von RStudio wird eine Seite mit den Details themes und themeSelector() angezeigt, aber es heißt: "Der Design-Selektor ist nur für die Entwicklung einer Anwendung gedacht." Gibt es Librarys, die dynamisch veränderbare Designs erlauben, die produktionsbereit sind?Prodution ready themeSelector für Shiny
Antwort
Es kann nur während der Entwicklung verwendet werden, aber ich sehe keinen Grund, warum Sie es nicht in der Produktion verwenden könnten. Wenn Sie einen Blick auf die code werfen, ist es nur das Nachschlagen und Ändern der stylesheet link
in der head
Abschnitt.
Es gibt keinen anderen Weg dies zu erreichen als mit javaScript
, also würde ich einfach weitermachen und verwenden, was bereits geschrieben ist.
könnten Sie ändern die themeSelector
Funktion von einer ziehbar Festplatte auf eine einfachen selectInput
wie folgt zu ändern:
library(shiny)
library(shinythemes)
themeSelector <- function() {
div(
div(
selectInput("shinytheme-selector", "Choose a theme",
c("default", shinythemes:::allThemes()),
selectize = FALSE
)
),
tags$script(
"$('#shinytheme-selector')
.on('change', function(el) {
var allThemes = $(this).find('option').map(function() {
if ($(this).val() === 'default')
return 'bootstrap';
else
return $(this).val();
});
// Find the current theme
var curTheme = el.target.value;
if (curTheme === 'default') {
curTheme = 'bootstrap';
curThemePath = 'shared/bootstrap/css/bootstrap.min.css';
} else {
curThemePath = 'shinythemes/css/' + curTheme + '.min.css';
}
// Find the <link> element with that has the bootstrap.css
var $link = $('link').filter(function() {
var theme = $(this).attr('href');
theme = theme.replace(/^.*\\//, '').replace(/(\\.min)?\\.css$/, '');
return $.inArray(theme, allThemes) !== -1;
});
// Set it to the correct path
$link.attr('href', curThemePath);
});"
)
)
}
ui <- fluidPage(
fluidRow(
column(4, themeSelector())
)
)
server <- function(input, output) {
}
shinyApp(ui, server)
Ich habe Ihren Code in meine Anwendung eingefügt und es hat perfekt funktioniert. Ich muss Ihren Code noch in meine endgültige Anwendung integrieren, aber ich könnte Ihre Lösung nicht glücklicher sein. – Frek
- 1. Alternative für "$ (Dokument) .ready" -Funktion
- 2. Ready-Event für dynamische Polymerelemente
- 3. android intent für sdcard ready
- 4. JSF Alternativen für $ (document) .ready
- 5. $ (document) .ready() funktioniert, aber $ .ready() nicht
- 6. Shiny validate für read.csv
- 7. Shiny ConditionalPanel für Sidebar
- 8. Ready-Docker-Bild für Tensorflow zum Vorabladen
- 9. Fallback für Turbolinks 5.0 mit jQuery ready()
- 10. $ (Dokument) .ready() || setTimeout?
- 11. MDL ready event
- 12. mehrere $ (Dokument) .ready und $ (Fenster) .load in $ (Dokument) .ready
- 13. Shiny Slider Input Schritt für Monat
- 14. jQuery .ready funktioniert nicht
- 15. $ (Dokument) .ready funktioniert nicht
- 16. Javascript Promise Ready
- 17. Repeating JQuery $ (Dokument) .ready();
- 18. Jquery .ready() vs window.onload
- 19. Yii2. $ (Document) .ready Fehlerbehebung
- 20. Ein Guice-ready Sicherheitsframework?
- 21. eckig run jquery $ (Dokument) .ready
- 22. jquery - Bereich innerhalb $ (Dokument) .ready()?
- 23. Ready ViewBag-Werte vom Controller?
- 24. Alternative zu angular.element (Dokument) .ready
- 25. Shiny: Gauge von flexdashboard in Shiny App
- 26. Reagieren - mit doc ready js-Datei für jquery?
- 27. Wie erreiche ich $ (document) .ready type Verhalten für AJAX-Inhalte?
- 28. Best Practices für die Platzierung der Document Ready-Funktion
- 29. Best Practices für die Funktionen in jquery-Ready-Funktion erklärt
- 30. Javascript wie $ (Dokument) .ready() für "moderne HTML5" Browser
Können Sie nicht den themeSelector auf einer entfalteten App lassen? Ich denke, es hilft, ein Thema zu wählen, aber Sie können es in Ihrer App lassen, selbst wenn der Entwickler fertig ist. – qfazille
Ich möchte nicht wirklich, dass die Benutzer irgendein Thema wählen. Ich möchte nur, dass die Benutzer eine Option haben, ein dunkles oder ein helles Thema auszuwählen. Ich plane, GyD selectInput Steuerelement in ein actionButton zu ändern, das zwischen zwei Themen wahrscheinlich Cosmo und dunkel wählen wird. – Frek