r блестящая функция наблюдения очищает ввод текста - PullRequest
0 голосов
/ 11 декабря 2018

Привет. Я пытаюсь создать страницу входа, которая связывается со службой API и проверяет учетные данные пользователя.Если учетные данные верны, то появляется новый пользовательский интерфейс, который просто создает график.Если это не правильно, сообщение на экране входа в систему должно сказать «неправильный вход в систему».В настоящее время, когда я пытаюсь ввести любое из полей на странице входа в систему (ui1.r), поле обновляется / стирает себя через секунду или около того, что не позволяет мне передавать пользовательский ввод в API.У меня есть следующие файлы

server.r:

rm(list = ls())
library(shiny)
library(dplyr)
library(shinyjs)
umls <- dbConnect(drv=RSQLite::SQLite(), 
                  dbname="/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_browser.sqlite3")
licenseCode <- "mylicense"



shinyServer(function(input, output) {

  source('ui1.R') #login page



  output$page <- renderUI({ ui1 })

  observe({
    z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                    input$user, input$password),intern=TRUE)
    if (grepl("false",z[22])) {
      renderText("incorrect login")
    }
    if (grepl("true",z[22])) 
    {
      output$page <- renderUI({ ui2 })
      output$table <- renderTable({mtcars()})
    }
  })

})

ui1.r

ui1 <- shinyUI(fluidPage(


      # Application title
      titlePanel("UMLS Constraint Browser"),

      # Sidebar with a slider input for number of bins 
      sidebarLayout(
        sidebarPanel(
          textInput("user", "User",""),
          textInput("password", "Password",""),
          actionButton("login", "Login")

        ),
        mainPanel(
          tableOutput("table")
        )
      )
    ))

В чем проблема?

1 Ответ

0 голосов
/ 11 декабря 2018

Думаю, проблема в функции observe.Каждый раз, когда вы пишете письмо, он отправляет запрос в вашу базу данных учетных данных.Вместо этого вы должны попытаться использовать ObserveEvent:

shinyServer(function(input, output) {

observeEvent(input$login, {
z<-system(paste("perl", "/media/sf_umls-2018AA-full/2018AA-full/2018AA/META/umls_auth.pl",
                input$user, input$password),intern=TRUE)
if (grepl("false",z[22])) {
  renderText("incorrect login")
}
if (grepl("true",z[22])) 
{
  output$page <- renderUI({ ui2 })
  output$table <- renderTable({mtcars()})
}  })

})

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

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