AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77033037
Accepted
TarJae
TarJae
Asked: 2023-09-03 23:42:52 +0800 CST2023-09-03 23:42:52 +0800 CST 2023-09-03 23:42:52 +0800 CST

Como adicionar a sétima cor ao orderInput em brilhantejqui

  • 772

A orderInput()função do shinyjquipacote utiliza seis classes de botões Bootstrap predefinidas para estilizar os itens que exibe. Esses estilos podem ser especificados usando o item_classparâmetro. Para mais detalhes, consulte a documentação .

Tento adicionar classes adicionais, a função orderInput(), que parece ter sido projetada para aceitar apenas as seis classes de botão Bootstrap defaultpredefinidas ( ,,,,,,, ) .primarysuccessinfowarningdanger

Isso é possível?

library(shiny)
library(shinyjqui)

ui <- fluidPage(
  tags$head(
    tags$style(
      HTML("
            .grey { background-color: grey; color: white; }
           ")
    )
  ),
  
  uiOutput("custom_orderInput")
)

server <- function(input, output, session) {
  
  output$custom_orderInput <- renderUI({
    
    tagList(
      orderInput('default', 'default', items = 1:3, item_class = 'default'),
      orderInput('primary', 'primary', items = 1:3, item_class = 'primary'),
      orderInput('success', 'success', items = 1:3, item_class = 'success'),
      orderInput('info', 'info', items = 1:3, item_class = 'info'),
      orderInput('warning', 'warning', items = 1:3, item_class = 'warning'),
      orderInput('danger', 'danger', items = 1:3, item_class = 'danger'),
      orderInput('grey', 'grey', items = 7:9, item_class = 'grey')
    )
    
  })
  
}

shinyApp(ui, server)
  • 2 2 respostas
  • 33 Views

2 respostas

  • Voted
  1. Best Answer
    0xe1λ7r
    2023-09-04T00:27:54+08:002023-09-04T00:27:54+08:00

    Atualização: Implementada a sugestão de @Stéphane Laurent:

    alterado .grey > buttoncom #grey > .btn removido library(shinyjs)e useShinyjs() aumento de 50 para 75

    A função orderInput() do brilhantejqui foi projetada com as classes de botão Bootstrap em mente. Se a função não oferece suporte nativo a classes personalizadas, talvez seja necessário aplicar um hack para contornar isso.

    Você definiu a classe .grey corretamente, mas se orderInput() não oferecer suporte direto a classes personalizadas, um método seria usar JavaScript para modificar o atributo de classe dos elementos HTML renderizados depois de terem sido criados pelo Shiny.

    Talvez você possa tentar esta solução alternativa para corrigir seu problema:

    Inclui uma shinyjsfunção para executar JS personalizado. Execute um pequeno script JS para adicionar sua classe personalizada aos elementos desejados após eles serem renderizados. Agora você pode modificar seu código existente para conseguir isso:

    library(shiny)
    library(shinyjqui)
    
    ui <- fluidPage(
      tags$head(
        tags$style(
          HTML("
                .grey { background-color: grey; color: white; }
               ")
        )
      ),
      
      uiOutput("custom_orderInput"),
      
      # Add a JS script to add the 'grey' class to the appropriate elements
      tags$script(
        HTML("
             $(document).on('shiny:connected', function(event) {
               setTimeout(function(){
                 $('#grey > .btn').addClass('grey');
               }, 75);
             });
             ")
      )
    )
    
    server <- function(input, output, session) {
      
      output$custom_orderInput <- renderUI({
        
        tagList(
          orderInput('default', 'default', items = 1:3, item_class = 'default'),
          orderInput('primary', 'primary', items = 1:3, item_class = 'primary'),
          orderInput('success', 'success', items = 1:3, item_class = 'success'),
          orderInput('info', 'info', items = 1:3, item_class = 'info'),
          orderInput('warning', 'warning', items = 1:3, item_class = 'warning'),
          orderInput('danger', 'danger', items = 1:3, item_class = 'danger'),
          orderInput('grey', 'grey', items = 7:9, item_class = 'default') # Use 'default' as a placeholder
        )
        
      })
      
    }
    
    shinyApp(ui, server)
    

    Desta forma, utilizando o shinyjspacote para integrar JS customizado. Depois que o aplicativo Shiny se conecta, o JavaScript espera um pouco (50 ms neste caso, mas você pode ajustar conforme necessário) e então adiciona a classe .grey aos elementos do botão dentro do .greypai. Também definimos item_class como 'default' como espaço reservado, que será substituído por nosso JS.

    • 2
  2. Stéphane Laurent
    2023-09-04T03:38:28+08:002023-09-04T03:38:28+08:00

    A resposta de @ 0xe1λ7r é boa. Dito isto, você pode evitar o uso de setTimeoutwhich implica a escolha do atraso e usar setIntervale clearIntervalem vez disso:

        HTML("
             $(document).on('shiny:connected', function(event) {
                var interval = setInterval(function() {
                  var $itemGroup = $('#grey > .btn');
                  if($itemGroup.length) {
                    $itemGroup.addClass('grey');
                    clearInterval(interval);
                  }
                }, 10);
             });
       ")
    

    Com este código, a existência do grupo de itens é verificada a cada período de 10 ms após a conexão do Shiny, e uma vez detectada a nova classe é adicionada e então o código é destruído.

    • 2

relate perguntas

  • Adicionar número de série para atividade de cópia ao blob

  • A fonte dinâmica do empacotador duplica artefatos

  • Selecione linhas por grupo com 1s consecutivos

  • Lista de chamada de API de gráfico subscritoSkus estados Privilégios insuficientes enquanto os privilégios são concedidos

  • Função para criar DFs separados com base no valor da coluna

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve