दिलचस्प पोस्ट
पायथन स्ट्रिंग स्वरूपण:% बनाम। प्रारूप Google ReCAPTCHA कैसे आवश्यक हो? आप अपने संस्करण नियंत्रण भंडार को व्यवस्थित कैसे करते हैं? HTML तालिका में JSON डेटा प्रदर्शित करें कैसे मैथ। पोव () को एनएटी फ्रेमवर्क में लागू किया जाता है? कैसे एक ArrayList सॉर्ट करने के लिए? एक XElement के InnerXml प्राप्त करने का सबसे अच्छा तरीका है? क्या हिम तेंदुए पर Xcode 4.2 के लिए आईओएस 5.1 एसडीके प्राप्त करना संभव है? एन यादृच्छिक संख्या प्राप्त करना है कि राशि एम है Word 2007 .docx फ़ाइल में मैं शब्द कैसे खोज सकता हूं? रेल में, रिकॉर्ड को सीएसवी फ़ाइल के रूप में कैसे वापस करना है XSD फ़ाइल के विरुद्ध XML फ़ाइल को मान्य करने का सबसे अच्छा तरीका क्या है? कैसे एक <iframe> में एक पीडीएफ फाइल खोलने के लिए? क्या आईएनटी और वीएआरएआरएआर प्राथमिक कुंजी के बीच एक वास्तविक प्रदर्शन अंतर है? भविष्य का नाशक `std :: async 'अवरोधन से क्यों लौट आया है?

चमकदार: फ़ंक्शन चालू हो रहा है, तो प्रदर्शित "लोड हो रहा है …" संदेश

मैं शालीन जीयूआई आर पैकेज का उपयोग करता हूँ मैं एक्शन बटन के दबाए जाने के बाद "लोडिंग …" जैसे संदेश प्रदर्शित करने का एक तरीका तलाश रहा हूं। फ़ंक्शन को निष्पादित करने में कई मिनट लगते हैं, इसलिए मुझे उपयोगकर्ता को किसी तरह सूचित करना होगा कि बटन ने वास्तव में कुछ ईवेंट ट्रिगर किया था। अब सर्वर.आर कोड इस तरह दिखता है:

DATA <- reactive({ if(input$DownloadButton>0) { RunDownload() } else { NULL } }) output$Download <- renderText({ if(NROW(DATA())>0) { paste0(Sys.time(),": ",NROW(DATA()), " items downloaded") } else { '' } }) 

actionButton() एक फ़ंक्शन है जो इंटरनेट से डेटा डाउनलोड करता है input$DownloadButton कार्रवाई है बटन। तो बटन दबाए जाने के बाद उपयोगकर्ता कई मिनट के लिए प्रतीक्षा करता है और उसके बाद ही एक संदेश दिखाई देता है कि यह डाउनलोड सफल रहा है मैं एक्शन बटन के बाद बस एक बटन "लोड हो रहा है …" को दिखाना चाहूंगा और फिर paste0(Sys.time(),": ",NROW(DATA()), " items downloaded") जैसे दूसरे संदेश को निष्पादन समाप्त होता है।

वेब के समाधान से एकत्रित समाधान "चमकदार: फ़ंक्शन चालू हो रहा है, तो प्रदर्शित "लोड हो रहा है …" संदेश"

मैं पहले जो भी पोस्ट किया था उसके मुकाबले मैं एक सरल और अधिक विश्वसनीय तरीके से उपयोग कर रहा हूं।

का संयोजन

 tags$style(type="text/css", " #loadmessage { position: fixed; top: 0px; left: 0px; width: 100%; padding: 5px 0px 5px 0px; text-align: center; font-weight: bold; font-size: 100%; color: #000000; background-color: #CCFF66; z-index: 105; } ") 

साथ में

 conditionalPanel(condition="$('html').hasClass('shiny-busy')", tags$div("Loading...",id="loadmessage") ) 

उदाहरण:

 runApp(list( ui = pageWithSidebar( headerPanel("Test"), sidebarPanel( tags$head(tags$style(type="text/css", " #loadmessage { position: fixed; top: 0px; left: 0px; width: 100%; padding: 5px 0px 5px 0px; text-align: center; font-weight: bold; font-size: 100%; color: #000000; background-color: #CCFF66; z-index: 105; } ")), numericInput('n', 'Number of obs', 100), conditionalPanel(condition="$('html').hasClass('shiny-busy')", tags$div("Loading...",id="loadmessage")) ), mainPanel(plotOutput('plot')) ), server = function(input, output) { output$plot <- renderPlot({ Sys.sleep(2); hist(runif(input$n)) }) } )) 

टैग $ head () की आवश्यकता नहीं है, लेकिन सिर टैग के अंदर सभी शैलियों को रखने के लिए यह एक अच्छा अभ्यास है।

मैंने साइडबारपैनेल () को निम्न कोड जोड़कर समस्या का समाधान किया:

 HTML('<script type="text/javascript"> $(document).ready(function() { $("#DownloadButton").click(function() { $("#Download").text("Loading..."); }); }); </script> ') 

आप शिनीजेएस का उपयोग कर सकते हैं: https://github.com/daattali/shinyjs

जब एक्शन बटन दबाया जाता है, तो आप आसानी से "लोड हो रहा है …" दिखाए जाने वाले पाठ घटक को टॉगल कर सकते हैं, और जब गणना समाप्त हो गई है, तो आप इस घटक को छिपी में बदल सकते हैं।

मुझे एक समाधान मिला, जो मेरे लिए ठीक काम करता है मैं बूटस्ट्रैप मॉडल का उपयोग कर रहा हूँ यह तब दिखाया जाता है जब समारोह का निष्पादन शुरू होता है और फिर छिपा रहता है, जब यह समाप्त हो जाता है

modalBusy <- फ़ंक्शन (आईडी, शीर्षक, …) {

  msgHandler = singleton(tags$head(tags$script('Shiny.addCustomMessageHandler("jsCode", function(message) { console.log(message) eval(message.code); });' ) ) ) label_id = paste(id, "label", sep='-') modal_tag <- div(id=id, class="modal hide fade", "aria-hidden"=FALSE, "aria-labelledby"=label_id, "role"="dialog", "tabindex"="-1", "data-keyboard"=FALSE, "data-backdrop"="static") header_tag <- div(class="modal-header", h3(id=label_id, title)) body_tag <- div(class="modal-body", Row(...)) footer_tag <- div(class="modal-footer") modal_tag <- tagAppendChildren(modal_tag, header_tag, body_tag, footer_tag) tagList(msgHandler, modal_tag) } 

दिखाने के लिए और छुपाने के लिए कार्य का उपयोग करें

 showModal <- function(id,session) { session$sendCustomMessage(type="jsCode", list(code= paste("$('#",id,"').modal('show')" ,sep=""))) } hideModal <- function(id,session) { session$sendCustomMessage(type="jsCode", list(code= paste("$('#",id,"').modal('hide')" ,sep=""))) } 

अपने फ़ंक्शन कॉल से पहले showModal फ़ंक्शन को कॉल करें और बाद में छिपाने वाला मॉडल फ़ंक्शन कॉल करें!

उम्मीद है की यह मदद करेगा।

SEB