С блестящей выборкой, избегайте сортировки результатов поиска - PullRequest
3 голосов
/ 27 июня 2019

В приведенном ниже воспроизводимом блестящем приложении поле поиска с возможностью поиска переупорядочивает значения на длину строки символов .

enter image description here

Если я наберу 1 в поле поиска, над «Цилиндрами» появится «Шестерни», потому что строка на короче . Тем не менее, я хочу, чтобы они были в первоначальном порядке, то есть 11 выше 12 выше 13.

В потоке selectize repo предлагается добавить что-то вроде sortField: [{field: 'name', direction: 'asc'}], но мне не удается добавить это в блестящем контексте. Таким образом, добавление options = list(sortField = list(field = 'name', direction = 'asc')) к selectizeInput() не имеет никакого эффекта.

library(shiny)
choices <- c(
  "11 Cylinders" = "cyl",
  "12 Transmission" = "am",
  "13 Gears" = "gear"
)

shinyApp(
  ui = fluidPage(
    selectizeInput(
      "variable", 
      "Variable:", 
      choices
    )
  ),
  server = function(input, output) {
  }
)

1 Ответ

0 голосов
/ 27 июня 2019
library(shiny)

# must have named vector for selectize.js to pick up on the injection
choices <- c(
  "11 Cylinders" = "cyl",
  "12 Transmission" = "am",
  "13 Gears" = "gear"
)

# define JS to inject for options
##asceding order
sort_asc <- I("[{field: 'name', direction: 'asc'},{field: '$score'}]")

##decending order
sort_desc <- I("[{field: 'name', direction: 'desc'},{field: '$score'}]")

JS_opts <- list(create=TRUE,
                labelField =  'name',
                searchField = 'name',
                sortField = sort_asc
                )

shinyApp(
  ui = fluidPage(
    selectizeInput(
      inputId = "variable", 
      label = "Variable:", 
      choices = choices,
      options = JS_opts
    )
  ),
  server = function(input, output) {
  }
)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...