【问题标题】:Tableau JavaScript API filter function in Shiny RShiny R 中的 Tableau JavaScript API 筛选功能
【发布时间】:2017-08-11 21:41:12
【问题描述】:

我正在测试将 Tableau JavaScript API 集成到单页闪亮应用程序中。我已成功渲染 Tableau Viz,但筛选功能不起作用。

这是我的代码:

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

有什么想法吗?

【问题讨论】:

    标签: javascript r shiny tableau-api


    【解决方案1】:

    终于找到出路了... 由于某种原因,将JavaScript函数转换为shinyjs.function时,它只能识别一个参数,即在这种情况下通过删除第一个参数来重写过滤器函数:

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

    这应该可以解决问题。 感谢任何为此花费您宝贵时间的人...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多