在 Javascript API 中处理 Tableau 日期过滤器?
Handling Tableau Date Filters in Javascript API?
我一直在 tableau 提供的 JavaScript API Tutorial 中工作。
过滤器选项在区域过滤器上运行良好,但由于某些原因在 "Year" 过滤器上停滞不前。这是我的代码:
var viz;
var workbook;
// Initialize the javascript controls for Tableau
window.onload=function() {
var vizDiv = document.getElementById('viz');
var vizURL = 'http://public.tableau.com/views/WorldIndicators/GDPpercapita';
var options = {
width: '600px',
height: '540px',
hideToolbar: true,
hideTabs: true,
onFirstInteractive: function() {
document.getElementById('sheetName').innerHTML=viz.getWorkbook().getActiveSheet().getName();
}
}
viz = new tableauSoftware.Viz(vizDiv,vizURL, options);
};
// Filter By Years
function addValuesToFilter() {
activeSheet = viz.getWorkbook().getActiveSheet();
activeSheet.applyFilterAsync(
"Year",
["2002", "2003"],
tableau.FilterUpdateType.ADD);
}
// WORKING Filter Region
function addValuesToFilter() {
activeSheet = viz.getWorkbook().getActiveSheet();
activeSheet.applyFilterAsync(
"Region",
["Europe", "The Americas"],
tableau.FilterUpdateType.ADD);
}
所以我想肯定有一些 'getProperty' 函数的孩子来转储列名或其他东西,但是 API 很少,而且我不是一个很好的程序员.我查看了 .twb 文件的 xml,但它主要是 mumbo-jumbo,很难弄清楚里面发生了什么。
我哪里错了?有什么地方可以获取过滤器名称列表,或者日期过滤器在 Tableau 中的处理方式可能有所不同?
我不知道你是否想过这个,但我来这里是为了寻找其他东西,所以也许这会对某人有所帮助。
以下是我列出过滤器名称的方式。
activeSheet.getFiltersAsync().then(function(filters) {
for (var x=0; x<filters.length; x++) {
console.log(filters[x].getFieldName());
}
});
如果过滤器确实被命名为 "Year",请尝试一个更具描述性的名称。它会不会与 Tableau 中的另一个 属性 冲突?在某些情况下,日期过滤器的处理方式确实有所不同(例如,如果此过滤器依赖于之前应用的另一个过滤器)。
过滤器名称列表对我有帮助。
一旦我有了过滤器名称(例如 "YEAR(Date (year))"),下面的工作就开始了。
function addYearToFilter() {
activeSheet.applyFilterAsync(
"YEAR(Date (year))",
["2008","2009"],
tableau.FilterUpdateType.ADD);
}
我一直在 tableau 提供的 JavaScript API Tutorial 中工作。
过滤器选项在区域过滤器上运行良好,但由于某些原因在 "Year" 过滤器上停滞不前。这是我的代码:
var viz;
var workbook;
// Initialize the javascript controls for Tableau
window.onload=function() {
var vizDiv = document.getElementById('viz');
var vizURL = 'http://public.tableau.com/views/WorldIndicators/GDPpercapita';
var options = {
width: '600px',
height: '540px',
hideToolbar: true,
hideTabs: true,
onFirstInteractive: function() {
document.getElementById('sheetName').innerHTML=viz.getWorkbook().getActiveSheet().getName();
}
}
viz = new tableauSoftware.Viz(vizDiv,vizURL, options);
};
// Filter By Years
function addValuesToFilter() {
activeSheet = viz.getWorkbook().getActiveSheet();
activeSheet.applyFilterAsync(
"Year",
["2002", "2003"],
tableau.FilterUpdateType.ADD);
}
// WORKING Filter Region
function addValuesToFilter() {
activeSheet = viz.getWorkbook().getActiveSheet();
activeSheet.applyFilterAsync(
"Region",
["Europe", "The Americas"],
tableau.FilterUpdateType.ADD);
}
所以我想肯定有一些 'getProperty' 函数的孩子来转储列名或其他东西,但是 API 很少,而且我不是一个很好的程序员.我查看了 .twb 文件的 xml,但它主要是 mumbo-jumbo,很难弄清楚里面发生了什么。
我哪里错了?有什么地方可以获取过滤器名称列表,或者日期过滤器在 Tableau 中的处理方式可能有所不同?
我不知道你是否想过这个,但我来这里是为了寻找其他东西,所以也许这会对某人有所帮助。
以下是我列出过滤器名称的方式。
activeSheet.getFiltersAsync().then(function(filters) {
for (var x=0; x<filters.length; x++) {
console.log(filters[x].getFieldName());
}
});
如果过滤器确实被命名为 "Year",请尝试一个更具描述性的名称。它会不会与 Tableau 中的另一个 属性 冲突?在某些情况下,日期过滤器的处理方式确实有所不同(例如,如果此过滤器依赖于之前应用的另一个过滤器)。
过滤器名称列表对我有帮助。
一旦我有了过滤器名称(例如 "YEAR(Date (year))"),下面的工作就开始了。
function addYearToFilter() {
activeSheet.applyFilterAsync(
"YEAR(Date (year))",
["2008","2009"],
tableau.FilterUpdateType.ADD);
}