2017-03-14 36 views
0

我试图在我正在开发的Shiny项目中放置一个Graph。我发现最方便的方法是使用Javascript API和shinyjs包。将Tableau集成到使用JavaScript API的Shiny项目中

Tableau的JavaScript API详细解释了here 并且我的脚本看起来像这样。根据说明,它是正确的,根据shinyjs函数名称必须以“shinyjs”开头。

function shinyjs.init() { 
    var containerDiv document.getElementById("vizContainer"), 
    url = "https://public.tableau.com/profile/daniel.cuartas#!/vizhome/Indicadores_25/Pregunta"; 
    var viz new tableau.Viz(containerDiv, url); 
} 

和代码包含在我的闪亮ui.R块是这样

   ui = fluidPage(
      includeScript("https://public.tableau.com/javascripts/api/tableau-2.js"), 
      useShinyjs(), 
      extendShinyjs(script = "C:/Users/Antonia/Downloads/SaberDigital/init.js"), 
      tags$div(id = 'vizContainer'), 
         js$init() 

      ) 

我回到下一个错误:

Error : shinyjs: Error parsing the JavaScript file: SyntaxError: Unexpected identifier. 

它是什么,我做错了什么?

+0

@HubertL你是绝对正确的。我粘贴了错误的js文件。我已经更新了它。 –

回答

1

与您的代码的几个问题:

1 - 你必须使用tags$head(tags$script())告诉浏览器加载,而不是includeScript其中包括JS代码的脚本。

2-扩展功能shinyjs必须这样写shinyjs.init = function()并简化我内联它,而不是在一个单独的文件有它

3- URL格式,你即必须有这种格式https://public.tableau.com/views/YOUR-VISUALIZATION

4- shinyjs.init功能必须由服务器函数调用,而不是UI

shinyApp(ui = fluidPage(
    useShinyjs(), 
    tags$head(tags$script(src="https://public.tableau.com/javascripts/api/tableau-2.js")), 
    extendShinyjs(text = " 
shinyjs.init = function(){ 
var containerDiv = document.getElementById('vizContainer'); 
url = 'https://public.tableau.com/views/Indicadores_25/Pregunta'; 
var viz = new tableau.Viz(containerDiv, url); 
}"), 
    tags$div(id = 'vizContainer')), 
     server = function(input, output, session){js$init()}) 
+0

这完全解决了这个问题,我没有收到任何错误,但是我得到了一个空白区域。任何见解为什么? 非常感谢。 –

+0

@AntoniaSaninM现在工作吗? – HubertL

+0

是的,它的工作原理现在问题似乎是一个错误。我会发表另一个问题。非常感谢。 –

相关问题