Табличная функция фильтра JavaScript API в Shiny R

1

Я делаю тест для интеграции 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()
    })
  } 
)

Любые идеи почему?

Теги:
tableau
shiny

1 ответ

0
Лучший ответ

Наконец, найдите выход... По какой-то причине при преобразовании функций JavaScript в shinyjs.function он может распознавать только один параметр, то есть в этом случае переписать функцию фильтра, удалив первый параметр:

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

Это должно устранить проблемы. Спасибо всем, кто потратил ваше драгоценное время на это...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню