Ox.ColumnList: implement query
This commit is contained in:
parent
e5e93d8e12
commit
8c941edd03
1 changed files with 49 additions and 1 deletions
|
@ -14,11 +14,13 @@ Ox.ColumnList = function(options, self) {
|
||||||
custom: {},
|
custom: {},
|
||||||
items: [],
|
items: [],
|
||||||
list: 'table',
|
list: 'table',
|
||||||
|
query: {conditions: [], operator: '&'},
|
||||||
resize: null,
|
resize: null,
|
||||||
width: 768
|
width: 768
|
||||||
})
|
})
|
||||||
.options(options || {})
|
.options(options || {})
|
||||||
.update({
|
.update({
|
||||||
|
query: updateQuery,
|
||||||
width: function() {
|
width: function() {
|
||||||
self.columnWidths = getColumnWidths();
|
self.columnWidths = getColumnWidths();
|
||||||
self.$panel.size(0, self.columnWidths[0]);
|
self.$panel.size(0, self.columnWidths[0]);
|
||||||
|
@ -33,8 +35,20 @@ Ox.ColumnList = function(options, self) {
|
||||||
self.columnWidths = getColumnWidths();
|
self.columnWidths = getColumnWidths();
|
||||||
self.numberOfColumns = self.options.columns.length;
|
self.numberOfColumns = self.options.columns.length;
|
||||||
|
|
||||||
|
self.flatItems = [];
|
||||||
|
self.ids = [{}, {}, {}];
|
||||||
|
self.options.items.forEach(function(item0) {
|
||||||
|
item0.items.forEach(function(item1) {
|
||||||
|
self.ids[1][item1.id] = [item0.id];
|
||||||
|
item1.items.forEach(function(item2) {
|
||||||
|
self.ids[2][item2.id] = [item0.id, item1.id];
|
||||||
|
self.flatItems.push(item2);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
self.api = Ox.api(self.flatItems);
|
||||||
|
|
||||||
self.$lists = self.options.columns.map(function(column, i) {
|
self.$lists = self.options.columns.map(function(column, i) {
|
||||||
//Ox.print('SELECTED::', self.options.selected[i]);
|
|
||||||
return Ox.CustomList({
|
return Ox.CustomList({
|
||||||
item: self.options.columns[i].item,
|
item: self.options.columns[i].item,
|
||||||
itemHeight: self.options.columns[i].itemHeight,
|
itemHeight: self.options.columns[i].itemHeight,
|
||||||
|
@ -136,6 +150,40 @@ Ox.ColumnList = function(options, self) {
|
||||||
return Ox.splitInt(self.options.width, 3);
|
return Ox.splitInt(self.options.width, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateQuery() {
|
||||||
|
if (self.options.query.conditions.length == 0) {
|
||||||
|
self.items = self.options.items;
|
||||||
|
} else {
|
||||||
|
self.api({
|
||||||
|
keys: ['id', '_ids'],
|
||||||
|
query: self.options.query
|
||||||
|
}, function(result) {
|
||||||
|
var ids = [[], [], []];
|
||||||
|
result.data.items.forEach(function(item) {
|
||||||
|
ids[0].push(self.ids[2][item.id][0]);
|
||||||
|
ids[1].push(self.ids[2][item.id][1]);
|
||||||
|
ids[2].push(item.id);
|
||||||
|
});
|
||||||
|
self.items = self.options.items.filter(function(item0) {
|
||||||
|
return Ox.contains(ids[0], item0.id);
|
||||||
|
});
|
||||||
|
self.items.forEach(function(item0) {
|
||||||
|
item0.items = item0.items.filter(function(item1) {
|
||||||
|
return Ox.contains(ids[1], item1.id);
|
||||||
|
});
|
||||||
|
item0.items.forEach(function(item1) {
|
||||||
|
item1.items = item1.items.filter(function(item2) {
|
||||||
|
return Ox.contains(ids[2], item2.id);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
self.$lists.forEach(function($list, i) {
|
||||||
|
$list.options({items: i == 0 ? self.items : []});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return that;
|
return that;
|
||||||
|
|
||||||
};
|
};
|
Loading…
Reference in a new issue