Может ли индикатор выполнения отображать случайные предложения? - PullRequest
0 голосов
/ 03 апреля 2019

Я проверяю возможность генерирования случайных предложений из списка и рендеринга их в progressSweetAlert.До сих пор я не смог продвинуться дальше, чем первый случайно выбранный пост предложения в качестве объекта 'value'.

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

"Еда жуков ..." "Смотрю, как краска высыхает ..." "Мышление больших мыслей .."

Используя пакет LaF, я успешно создал список предложений и назвал его:

x<-c('Locating evil driods.',
     'Planting happy thoughts.',
     'Checking the water for bugs.',
     'Reading "A Tale of Two Cities" ',
     'Questioning the matrix.',
     'Generating apple clones.',
     'Discovering new things.')

writeLines(x, con="tmp.csv")

Согласно мастерскому руководству BDS, вот рабочий пример :):

library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(LaF)


ui <- fluidPage(
  tags$h1("Progress bar in Sweet Alert"),
  useSweetAlert(), # /!\ needed with 'progressSweetAlert'
  actionButton(
    inputId = "go",
    label = "Launch long calculation !"
  )
)

server <- function(input, output, session) {

  observeEvent(input$go, {
    x<-sample_lines("tmp.csv", 5)
    y <- paste(x, 1:length(x), sep = "")

    progressSweetAlert(
      session = session, id = "myprogress",
      title = y,
      display_pct = TRUE, value = 0
    )
    for (i in seq_len(50)) {
      Sys.sleep(0.1)
      updateProgressBar(
        session = session,
        id = "myprogress",
        value = i*2
      )
    }
    closeSweetAlert(session = session)
    sendSweetAlert(
      session = session,
      title =" Calculation completed !",
      type = "success"
    )
  })

}

shinyApp(ui = ui, server = server)

Я надеюсь получить что-то не похожее на то, что вы можете видеть в этих примерах (https://blog.teamtreehouse.com/make-loading-screen-unity).

Однако вот что я получил:

Progress1 Progress2

1 Ответ

1 голос
/ 04 апреля 2019

Может быть, вы можете просто использовать параметр title?

Вы установили title = sentences[sample(length(sentences), 1)],

updateProgressBar может читать:

updateProgressBar(
  session = session,
  title = sentences[sample(length(sentences), 1)],
  id = "myprogress",
  value = i*10
)

Полный пример будет читать:

library("shiny")
library("shinyWidgets")


ui <- fluidPage(
tags$h1("Progress bar in Sweet Alert"),
useSweetAlert(), # /!\ needed with 'progressSweetAlert'
actionButton(
  inputId = "go",
  label = "Launch long calculation !"
)
)

server <- function(input, output, session) {

observeEvent(input$go, {
  progressSweetAlert(
    session = session, id = "myprogress",
    title = "Work in progress",
    display_pct = TRUE, value = 0
  )


  sentences <- c('Locating evil driods.',
                 'Planting happy thoughts.',
                 'Checking the water for bugs.',
                 'Reading "A Tale of Two Cities" ',
                 'Questioning the matrix.',
                 'Generating apple clones.',
                 'Discovering new things.')

  for (i in seq_len(10)) {
    Sys.sleep(1)
    updateProgressBar(
      session = session,
      title = sentences[sample(length(sentences), 1)],
      id = "myprogress",
      value = i*10
    )
  }
  closeSweetAlert(session = session)
  sendSweetAlert(
    session = session,
    title =" Calculation completed !",
    type = "success"
  )
})

}

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