闪亮 - 在fileInput中更改“上传完成”和“...文件”文本

时间:2017-11-01 11:23:07

标签: javascript r shiny shinydashboard

只要通过fileInput上传多个文件(例如6个),我就会在按钮旁边收到文本“6个文件”,并在进度条中收到“上传完成”。另外,我认为在紧急情况下(上传错误或smth)会在进度条中提供一些文本。我写的应用程序的UI是俄语,因此所有标签都是俄语。根据文档,我可以在fileInput中设置buttonLabel和占位符标签,而不是我上面提到的文本。任何想法我怎样才能改变它?

3 个答案:

答案 0 :(得分:3)

这不是一个完整的解决方案,因为它无法解决您使用多个文件时遇到的问题,但它可能是一个开始。这会更改进度条中的文本:

您可以使用存储在tags$script()附带的文件中的自定义javascript函数来执行此操作。 javascript文件需要位于www文件夹

app.r
www
|__ fileInput_text.js

<强> app.r

ui <- fluidPage(
    tags$script(src="fileInput_text.js"),
    fileInput('uploaded', 'Data Upload')
)

shinyApp(ui = ui, server = function(input, output) {})

自定义javascript功能: fileInput_text.js

$(document).ready(function(){
  $('#uploaded_progress').on("DOMSubtreeModified",function(){

    var target = $('#uploaded_progress').children()[0];
    if(target.innerHTML === "Upload complete"){
        console.log('Change')
        target.innerHTML = 'YOUR TEXT HERE';      
    }

  });
});

此函数将查找fileInput的ID(在本例中为uploaded)并将其从“上传完成”更改为您将其设置为:

Shiny App output

答案 1 :(得分:1)

在Shiny版本1.0.5消息&#34;上传完成&#34;在javascript源文件中硬编码。您需要修改源文件或向您的应用程序添加javascript hack以更改文本。或者,您可以使用某些CSS隐藏消息。它与翻译不同,但在某些情况下它可能足够好。

  1. 在ui.R的同一文件夹中创建文件app.css并添加到其中.progress-bar {color: transparent!important}
  2. includeCSS("app.css")添加到用户界面,例如: # Define UI for data upload app ---- ui <- fluidPage( includeCSS("app.css"), # The rest of your page...
  3. 它的工作原理是在进度条中使字体颜色透明。文本仍在那里,但它是不可见的。

答案 2 :(得分:0)

vim /usr/lib64/R/library/shiny/www/shared/shiny.min.js 并搜索“上传完成”一词,然后将其替换。 注意编码。