2017-03-14 68 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

是的,它的工作原理現在問題似乎是一個錯誤。我會發表另一個問題。非常感謝。 –

相關問題