2017-03-14 1 views
0

제가 작업중인 Shiny 프로젝트에 그래프를 넣으려고합니다. 가장 편리한 방법은 Javascript API와 shinyjs 패키지를 사용하는 것입니다.Javascript API를 사용하여 Tableau를 Shiny 프로젝트에 통합

Tableau 용 Javascript API는 here 으로 자세히 설명되어 있으며 내 스크립트는 다음과 같습니다. 지침에 따르면, shinyjs에 따르면 함수 이름 앞에 "shinyjs"가 있어야합니다. 그것이 내가 무슨 일을하고있는 중이 야한다

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

:

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() 

      ) 

입니까? 코드와

+0

@HubertL하지 UI 서버 기능으로 호출해야합니다. 잘못된 js 파일을 붙여 넣었습니다. 나는 그 후 그것을 업데이트했다. –

답변

1

몇 가지 문제 :

1 대신 JS 코드를 포함 includeScript의 스크립트를로드하는 브라우저에 지시 tags$head(tags$script())을 사용해야합니다. 기능을 확장

2 - shinyjs이 shinyjs.init = function() 내가

3 당신의 URL 형식이 형식 https://public.tableau.com/views/YOUR-VISUALIZATION

이 있어야합니다 즉 별도의 파일에 그것을하는 것보다 오히려 그것을 인라인 단순화처럼 작성해야합니다

4 - shinyjs.init 기능은 당신이 절대적으로 옳다

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

예, 작동합니다. 문제는 버그 인 것 같습니다. 나는 또 다른 질문을 게시 할 것이다. 고마워. –