fix filter selection

This commit is contained in:
rlx 2016-01-13 15:55:47 +05:30
parent fabd50bef1
commit 0afae95e8b
2 changed files with 55 additions and 7 deletions

View File

@ -158,13 +158,57 @@ oml.ui.filter = function(id) {
})
.bindEvent({
change: function(data) {
var isOuter = filterIndex % 4 == 0, id = data.checked[0].id;
ui.filters[filterIndex] = Ox.getObjectById(oml.config.user.ui.filters, id);
ui._filterState = oml.getFilterState(ui.find);
oml.$ui[isOuter ? 'filtersOuterPanel' : 'filtersInnerPanel'].replaceElement(
isOuter ? filterIndex / 2 : filterIndex - 1,
oml.$ui.filters[filterIndex] = oml.ui.filter(id)
);
var id_ = data.checked[0].id,
filter_ = Ox.getObjectById(oml.config.filters, id_),
filterIndex_ = Ox.getIndexById(ui.filters, id_),
filters = Ox.clone(ui.filters),
filterState,
find;
if (filterIndex_ == -1) {
// New filter was not part of old filter set
if (ui._filterState[filterIndex].selectedLength) {
// Filter with selection gets replaced, update find
find = Ox.clone(ui.find, true);
find.conditions.splice(
ui._filterState[filterIndex].index, 1
);
}
filters[filterIndex] = {
id: id_,
sort: filter_.sort
};
oml.UI.set(Ox.extend({
filters: filters
}, find ? {
find: find
} : {}));
replaceFilter(filterIndex, id_);
} else {
// Swap two exisiting filters
filterState = Ox.clone(ui._filterState[filterIndex]);
ui._filterState[filterIndex] = ui._filterState[filterIndex_];
ui._filterState[filterIndex_] = filterState;
filters[filterIndex] = {
id: id_,
sort: ui.filters[filterIndex_].sort
};
filters[filterIndex_] = {
id: id,
sort: ui.filters[filterIndex].sort
};
oml.UI.set({filters: filters});
replaceFilter(filterIndex, id_);
replaceFilter(filterIndex_, id);
}
function replaceFilter(index, id) {
var isOuter = index % 4 == 0;
oml.$ui[
isOuter ? 'filtersOuterPanel' : 'filtersInnerPanel'
].replaceElement(
isOuter ? index / 2 : index - 1,
oml.$ui.filters[index] = oml.ui.filter(id)
);
}
},
click: function(data) {
if (data.id == 'clearFilter') {

View File

@ -58,6 +58,10 @@
}).map(function(key) {
return {
id: key.id,
sort: [{
key: key.id == 'date' ? 'name' : 'items',
operator: '-'
}],
title: key.title,
type: Ox.isArray(key.type) ? key.type[0] : key.type
};