Приложение R Shiny Display занято в виджете

Я разрабатываю приложение R Shiny, включающее получение данных из Twitter. Поскольку этот процесс может длиться какое-то время, я хотел бы указать, что приложение чем-то занято, поэтому пользователь не видит, что страница заморожена.

В моем случае я храню некоторые реактивные значения следующим образом:

rv <- reactiveValues()
rv$analysisStarted <- FALSE
rv$analysisAvailable <- FALSE

Затем в пользовательском интерфейсе пользователь должен нажать actionButton, чтобы начать обработку. Затем я хотел бы указать, где работает Сервер ...

  observeEvent(input$analysisButton, {

    rv$analysisStarted <- TRUE
    rv$analysisAvailable <- FALSE

    #Processing Twitter info...

    rv$followersAnalysisStarted <- FALSE
    rv$followersAnalysisAvailable <- TRUE

  })

Если в UI.r я помещаю textOutput и создаю соответствующий метод вывода таким образом, он НЕ работает:

  output$text <- renderText({

    if (rv$analysisStarted) {
      "Server is working..."
    } else if (rv$analysisAvailable) {
     "Your report is ready :) "
    } else {
      "Enter the data to search and press analysisButton"
    }
  })

Я заметил, что когда начинается анализ, метка становится серой, но текст не обновляется, пока процесс не завершится.

Какой должна быть правильная кодировка этой функции? Можно ли перерисовать текстовый вывод в ходе ObservationEvent? Возможно ли это с необработанной блестящей библиотекой или требуется shinyjs, который я тоже использую?

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


person aloplop85    schedule 08.09.2015    source источник


Ответы (1)


В вашем случае было бы полезно использовать индикатор выполнения для проверки состояния. Ваши пользователи будут признательны за то, чтобы этот элемент указывал состояние. К сожалению, индикатор выполнения должен быть закодирован раньше функциональности. Это уловка, вы видите индикатор выполнения, но этот объект останавливается при запуске функции.

Вот руководство: http://shiny.rstudio.com/gallery/progress-bar-example.html

С моей точки зрения, индикатор выполнения - лучший способ информировать веб-пользователей о состоянии веб-сайта, но он не совсем идеален. Кроме того, вы можете изменить стиль панели с помощью CSS, чтобы настроить и выбрать свои собственные цвета, размер ...

person Braisly    schedule 14.09.2015
comment
Я попробую воспользоваться уловкой. Если поможет, отмечу как решение. Спасибо за помощь @braisly - person aloplop85; 18.09.2015
comment
Я включил withProgress и setProgress, и это выглядит намного лучше! - person aloplop85; 19.09.2015
comment
Прекрасно, рад это знать. ;) - person Braisly; 20.09.2015