2017-06-02 1 views
0

アクションボタンが光沢でクリックされると、カスタムメッセージ(反応性の値に応じてメッセージにミニテーブルが表示されます)を取得するにはどうすればよいですか?ここに私のコードです。メッセージは、私がrows()と呼ぶ反応テーブルを含んでいなければなりません。rをクリックしたときのカスタムメッセージ

library(shiny) 
library(datasets) 
library(rhandsontable) 
library(data.table) 


my_message= writeLines("validation is not successful. \nCheck following 
commodities:\nCPCCode Commodity Year") 

# This is the message I want when action button is clicked 


# validation is not successful. Please check the following commodities: 

#CPCCode Commodity  Year 
# 100   Maize  2010 
# 200   Rice  2015 
# 300   Tea  2016 
# 400   Banana  2014 
#. 
#. 
#. 
# and so on. The table can be upto max 50 rows 

ui = fluidPage(

actionButton("message", "message") 
) 

server = function(input,output,session){ 

rows= reactive({ 


d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010) 
d$Commodity = as.character(d$Commodity) 
d=rbind(d, c(200, "Rice", "2015")) 
d=rbind(d, c(300,"Tea", 2016)) 

}) 


observeEvent(input$message,{ 
if (is.null(input$message) || input$message == 0){return()} 

isolate({ 
    input$message 
    the_message <- paste("validation is not successful") 
    js_string <- 'alert("SOMETHING");' 
    js_string <- sub("SOMETHING",the_message,js_string) 
    session$sendCustomMessage(type='jsCode', list(value = js_string)) 
    }) 

    }) 

} 

shinyApp(ui,server) 

EDITED。これは、テーブルの最初の行のみを表示します。任意の提案は、あなたがmodalDialogdataTableOutputを追加し、modalDialogが作成された後、テーブルをレンダリングする必要がありますmodalDialogでテーブルを表示するには

library(shiny) 
library(datasets) 
library(rhandsontable) 
library(data.table) 


my_message= writeLines("validation is not successful. \nCheck following 
commodities:\nCPCCode Commodity Year") 

# This is the message I want when action button is clicked 


# validation is not successful. Please check the following commodities: 

#CPCCode Commodity  Year 
# 100   Maize  2010 
# 200   Rice  2015 
# 300   Tea  2016 
# 400   Banana  2014 
#. 
#. 
#. 
# and so on. The table can be upto max 50 rows 



ui = fluidPage(

    actionButton("show", "Show modal dialog") 

) 

server = function(input, output) { 


rows= reactive({ 


    d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010) 
    d$Commodity = as.character(d$Commodity) 
    d=rbind(d, c(200, "Rice", "2015")) 
    d=rbind(d, c(300,"Tea", 2016)) 

    }) 



# Return the UI for a modal dialog with data selection input. If 'failed' 
is 
# TRUE, then display a message that the previous value was invalid. 
dataModal <- function(failed = FALSE) { 
modalDialog(

    span("Validation is not successful", rows()), 


    footer = tagList(

    actionButton("ok", "OK") 
    ) 
    ) 
    } 


observeEvent(input$show, { 
    showModal(dataModal()) 
    }) 


    observeEvent(input$ok, { 

    removeModal() 

    }) 


    } 



     shinyApp(ui,server) 
+1

「モーダルダイアログ」を使用できます。 [this](https://shiny.rstudio.com/reference/shiny/latest/modalDialog.html)のリンクを参照してください。 – SBista

+0

ありがとうございます!非常に便利 –

+0

しかし、私の状況を関連付ける方法を混乱させるビット –

答えて

0

をいただければ幸いです。同じようにサーバーコードを編集しました。うまくいけば、これはあなたに役立ちます。

server = function(input, output) { 

    rows= reactive({ 
     d=data.frame(CPCCode=100, Commodity="Maize", Year= 2010) 
     d$Commodity = as.character(d$Commodity) 
     d=rbind(d, c(200, "Rice", "2015")) 
     d=rbind(d, c(300,"Tea", 2016)) 

    }) 

    # Return the UI for a modal dialog with data selection input. If 'failed' 
    # is 
    # TRUE, then display a message that the previous value was invalid. 
    dataModal <- function(failed = FALSE) { 
     modalDialog(

     span("Validation is not successful"), 

     dataTableOutput("table"), 

     footer = tagList(

      actionButton("ok", "OK") 
     ) 
    ) 
    } 


    observeEvent(input$show, { 
     showModal(dataModal()) 
     output$table <- renderDataTable({rows()}) 
    }) 


    observeEvent(input$ok, { 
     removeModal() 
    }) 

    } 
+0

ありがとうございました!非常に便利! –

+1

あなたの質問に答えられたらそれを受け入れることができますか? – SBista

関連する問題