Обновление текста после обновления в базе данных в Shiny - PullRequest
0 голосов
/ 27 августа 2018

Я использую ShinydashboardPlus для этого приложения. Я пытаюсь обновить значение, как только я обновляюсь в базе данных. Я могу проверить, обновляется ли он в файле database.but после обновления или, нажав кнопку со значком редактирования, я вижу изменения. Я пробовал наблюдать и реагировать на события в обоих направлениях. Кто-нибудь может мне помочь, как это сделать? Спасибо заранее.

ui.R
library(shiny)
library(shinyalert)
library(shinydashboardPlus)
library(shinydashboard)

dashboardPagePlus(

  header = dashboardHeaderPlus(
    title = "IEIS",
    enable_rightsidebar = FALSE

  ),
  sidebar = dashboardSidebar(
    sidebarMenu(
      menuItem("Personal Info", tabName = "p_info", icon = icon("user", lib = "glyphicon"))
    )
  ),
  body = dashboardBody(
    tabItems(
      tabItem(tabName = "p_info",
              fluidRow(
                uiOutput("long_info")

              )

      )
    )
  ),
  rightsidebar = rightSidebar(),
  title = "Demo"
) 
#########################
server.r
 library(shiny)
library(shinyalert)
library(shinydashboardPlus)
library(shinydashboard)
library(RMySQL)


function(input, output, session) {

  eis_data_con<-dbConnect(RMySQL::MySQL(),user='root',password='XXXXXXXX',dbname='eis',port=3306)
  user_details<<-"123456"

  long_info_data<-reactive({
      qr<-paste0("Select name from user_details where id='",user_details,"'")
      user_long_data<<-dbGetQuery(eis_data_con,qr)
  })

  output$long_info<-renderUI({
    long_info_data()
    box(
      title = "Detailed Profile:",
      width = 4,
      boxProfile(
        boxProfileItemList(
          bordered = TRUE,
          #name

          fluidRow(
            column(10,
                   boxProfileItem(
                     title = "Name",
                     description =user_long_data$name
                   )
            ),
            actionButton("name_edit", "", icon = icon("edit"))
          )
        )
      )
    )
  })

  name_edit_modal<-function()
  {
    modalDialog(
      title = "Name",
      textInput("edited_name","Enter Your Changed Name",value = user_long_data$name),
      easyClose = FALSE,
      fade = TRUE,
      footer = tagList(
        modalButton("Cancel"),
        actionButton("edit_name_save", "Save", icon = icon("save"))
      ),
      size='s')
  }

  observeEvent(input$name_edit,{
    #shinyalert('Name Edit', type='input', inputValue = user_long_data$name)
    showModal(
      name_edit_modal()
    )
  })

  observeEvent(input$edit_name_save,{
    qr<-paste0("update user_details set name='",input$edited_name,"' where id='",user_details,"'")

    res<-dbSendStatement(eis_data_con,qr)
    removeModal()

  })

}
...