Как предотвратить перемещение selectInput при поиске с помощью updateSelectizeInput

#r #shiny #selectinput

Вопрос:

У меня есть большое блестящее приложение , в котором есть два selectInput , у одного есть два варианта, а другой использует updateSelectizeInput с server = TRUE , чтобы получить параметры, потому что для отображения требуется более 36000 элементов, и это меняется в зависимости от того, что выбрано в первом selectInput .

Это работает, но, как вы можете видеть из следующего gif, когда я печатаю, окно поиска перемещается. Я предполагаю, что он перемещается во время поиска на стороне сервера. В чем может быть причина этого? Я попытался воссоздать проблему в простом приложении, но, хотя я добавляю все соответствующие части приложения, в воспроизводимом примере проблемы нет.

введите описание изображения здесь

Вот пример кода:

 library(shiny)
library(shinyjs)

option_list1<-seq(1,36000,1)
option_list2<-seq(36000, 72000,1)

ui <- fluidPage(
  useShinyjs(),
  selectInput(
    inputId = "scsource",
    label = "Select source of scRNA-seq data",
    choices = list(
      "Carraro et al(2021) - Lung",
      "Reyfman et al(2018) - Lung"
    ),
    selected = NULL,
    multiple = FALSE
  ),
  uiOutput("scgeneinput")
)

server <- function(input, output, session) {
  output$scgeneinput<-renderUI({
    req(input$scsource)
    selectInput(
      "scgene",
      "Select multiple genes",
      multiple = TRUE,
      choices = NULL
    )
  })
  
  observeEvent(input$scsource, {
    if (input$scsource == "Carraro et al(2021) - Lung"){
      delay(500, updateSelectizeInput(session, "scgene", choices = option_list1, server = TRUE))
    }
    else if(input$scsource == "Reyfman et al(2018) - Lung"){
      delay(500, updateSelectizeInput(session, "scgene", choices = option_list2, server = TRUE))
    }
  })
}

shinyApp(ui, server)
 

Кроме того, я использую shinyjs::delay функцию, потому что без нее параметры не видны. Этого не происходит в небольшом воспроизводимом приложении.

Любая помощь будет признательна.