Табличный фильтр не работает для SET, созданных с использованием Tableau Extension API - PullRequest
0 голосов
/ 03 мая 2019

Я создал экспорт в расширение CSV в таблице, чтобы встроить его в панель инструментов, чтобы пользователи могли загружать данные. однако у нас есть условие, и мне нужно установить фильтр с помощью applyFilterAsync на какое-то значение перед загрузкой и сбросить этот фильтр, используя тот же applyFilterAsync с параметрами 'filtername' и 'value' и filterUpdateType.ADD для добавления и REMOVE для удаления.

Это не работает в случае SET, Rangefilters, Dimensions и других.

Нужна ваша помощь, чтобы решить эту проблему.

Очистка фильтров:

for (var i = 0; i < worksheets.length; i++) {
    var sheet = worksheets[i];
    if (sheetList.indexOf(sheet.name) > -1) {
      sheet.getFiltersAsync());      
      sheet.clearFilterAsync('IN/OUT(DownloadSet)');
      console.log('Filter Cleared');
    }
  }

Применить фильтр после загрузки:

sheet.applyFilterAsync('IN/OUT(DownloadSet)','In',tableau.FilterUpdateType.Replace);

Пожалуйста, помогите решить эту проблему.

Спасибо.

1 Ответ

0 голосов
/ 07 мая 2019

Поскольку это асинхронные функции, они возвращают обещание.Ваш код должен выглядеть следующим образом:

    for (var i = 0; i < worksheets.length; i++) {
        var sheet = worksheets[i];
        if (sheetList.indexOf(sheet.name) > -1) {
          sheet.getFiltersAsync())
          .then(function() { 
             sheet.clearFilterAsync('IN/OUT(DownloadSet)');
          })
          .then(function() { 
             console.log('Filter Cleared');
          })      
        }
      }

То же самое с applyFilterAsync:

sheet.applyFilterAsync('IN/OUT(DownloadSet)',['In'],tableau.FilterUpdateType.Replace)
    .then(function() {
     // do something
    })

Не видя больше контекста / ошибок, это, вероятно, вызывает ваши проблемы.

РЕДАКТИРОВАТЬ: установить фильтры автоматически оценить значение «В».Я смотрю, если у вас есть правильный синтаксис для установленного фильтра.

ОБНОВЛЕНИЕ :.Это должен быть правильный асинхронный вызов:

Для applyFilterAsync вам нужно передать массив строк, sheet.applyFilterAsync('IN/OUT(DownloadSet)',['In'],tableau.FilterUpdateType.Replace)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...