2017-08-10 9 views
0

私はTableau JavaScript APIを1ページの光沢のあるアプリケーションに統合するためのテストを行っています。私は正常にTableau Vizをレンダリングしましたが、フィルタ関数は機能しません。Shiny RのTableau JavaScript APIフィルタ機能

ここに私のコードです:

library(shiny) 
library(shinyjs) 

shinyApp(

    ui = fluidPage(

useShinyjs(), 

tags$head(tags$script(src="https://public.tableau.com/javascripts/api/tableau-2.min.js")), 
extendShinyjs(text='shinyjs.initializeViz = function(){ 
var placeholderDiv = document.getElementById("tableauViz"); 
    var url = "http://public.tableau.com/views/WorldIndicators/GDPpercapita"; 
    var options = { 
    hideTabs: true, 
    hideToolbar: true, 
    onFirstInteractive: function() { 
    workbook = viz.getWorkbook(); 
    activeSheet = workbook.getActiveSheet(); 
    } 
    }; 
    viz = new tableau.Viz(placeholderDiv, url, options); 
    } 
shinyjs.filterSingleValue= function(filtername, value){ 
activeSheet.applyFilterAsync(
    filtername, 
    value, 
    tableau.FilterUpdateType.REPLACE); 
    } '), 

titlePanel("Tableau JavaScript API in Shiny App"), 

selectInput('region', 'Region: ', 
    c('The Americas', 'Europe', 'Middle East')), 
tags$div(id = 'tableauViz') 
), 

server = function(input, output, session){ 

    observeEvent(input$region, { 
     js$filterSingleValue('Region', input$region) 
     js$initializeViz() 
    }) 
    } 
) 

任意のアイデアはなぜですか?

答えて

0

最後に...何らかの理由で を抜け出す方法を見つけるshinyjs.functionにJavaScript関数を変換するとき、それは最初のパラメータだけを除去することにより、フィルタ機能を書き換えすなわち、この場合には、一つのパラメータを認識することができます

shinyjs.filterSingleValue= function(value) { 
activeSheet.applyFilterAsync(
'Region', 
value, 
tableau.FilterUpdateType.REPLACE); 
} 

これで問題は解決します。 これにあなたの貴重な時間を過ごした人のためにありがとう...

関連する問題