2013-07-16 64 views
0

我想創建一個CategoryFilter,它將搜索數組而不是匹配列。使用CategoryFilter搜索數組而不是匹配列

例如,如果我有以下的數據表,其中包含有關的T恤數據:

var data = new google.visualization.DataTable(); 
data.addColumn("string", "ItemName"); 
data.addColumn("number", "Price"); 
data.addColumn("string", "Size"); 
data.addRows([ 
    // Loop through and add some records 
]); 

我可以創建一個CategoryFilter容易夠到的尺寸

var sizePicker = new google.visualization.ControlWrapper({ 
    "controlType": "CategoryFilter", 
    "containerId": "size-picker", 
    "options": { 
    "filterColumnLabel": "Size" 
    } 
}); 

到目前爲止,所有的作品篩選大。

現在可以說,我希望每個T恤記錄包含襯衫進來可用顏色的數組。

所以基本上我想有這樣的事情的記錄

[ "Crew T-Shirt", "10", "Large", [ "Blue", "Striped", "White" ]] 

然後一個CategoryFilter有一個顏色列表,當選擇一個顏色時,過濾器搜索該數組,如果它包含所選顏色,它將包含在結果集中。

現在由於DataTable's addColumn()方法不支持數組,我不知道如何去做這件事。我甚至找不到一種方法來覆蓋過濾方法。會有這樣的事情嗎?

回答

0

大多數人列出DataTable中的所有組合,使用幾個CategoryFilter s並將它們全部綁定在Dashboard中。例如:

var data = google.visualization.arrayToDataTable([['Item Name', 'Price', 'Size', 'Color'], 
    ['Crew T-Shirt', '10', 'Large', 'Blue'], 
    ['Crew T-Shirt', '10', 'Large', 'Striped'], 
    // etc... 
]); 

var sizePicker = new google.visualization.ControlWrapper({ 
    "controlType": "CategoryFilter", 
    "containerId": "size-picker", 
    "options": { "filterColumnLabel": "Size" } }); 
var colorPicker = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'color-picker', // or whatever.... 
    'options': { 'filteredColumnLabel': 'Color'} }); 
var dashboard = new google.visualization.Dashboard(DOC.EL_BY_ID('XXX')); 
dashboard.bind([sizePicker, colorPicker], [ CHART1, CHART2, etc. ]); 
dashboard.draw(dataTable);