fix setting items and sort at the same time

This commit is contained in:
j 2014-02-07 08:37:46 +00:00
parent ddb6165a76
commit 45155f1f71

View file

@ -833,45 +833,45 @@ Ox.List = function(options, self) {
var keys = Ox.unique(self.options.keys.concat(self.options.unique)),
offset = page * self.pageLength,
range = [offset, offset + getPageLength(page)];
if (Ox.isUndefined(self.$pages[page])) { // fixme: unload will have made this undefined already
self.$pages[page] = constructEmptyPage(page);
page == 0 && fillFirstPage();
self.$pages[page].appendTo(that.$content);
self.requests.push(self.options.items({
keys: keys,
query: self.options.query,
range: range,
sort: self.options.sort
}, function(result) {
var $emptyPage = self.$pages[page];
self.$pages[page] = $('<div>').addClass('OxPage').css(getPageCSS(page));
result.data.items.forEach(function(v, i) {
var pos = offset + i;
self.$items[pos] = Ox.ListItem({
construct: self.options.construct,
data: v,
//format: self.options.format,
position: pos,
unique: self.options.unique
});
isSelected(pos) && self.$items[pos].addClass('OxSelected');
self.$items[pos].appendTo(self.$pages[page]);
});
page == 0 && fillFirstPage();
// FIXME: why does emptyPage sometimes have no methods?
//Ox.Log('List', 'emptyPage', $emptyPage)
$emptyPage && $emptyPage.remove && $emptyPage.remove();
self.$pages[page].appendTo(that.$content);
!Ox.isUndefined(callback) && callback(); // fixme: callback necessary? why not bind to event?
}));
} else {
//Ox.Log('List', 'loading a page from cache, this should probably not happen -----------')
self.$pages[page].appendTo(that.$content);
if (!Ox.isUndefined(self.$pages[page])) {
Ox.Log('List', 'fixme: unload should have made this undefined already');
}
self.$pages[page] = constructEmptyPage(page);
page == 0 && fillFirstPage();
self.$pages[page].appendTo(that.$content);
self.requests.push(self.options.items({
keys: keys,
query: self.options.query,
range: range,
sort: self.options.sort
}, function(result) {
var $emptyPage = self.$pages[page];
self.$pages[page] = $('<div>').addClass('OxPage').css(getPageCSS(page));
result.data.items.forEach(function(v, i) {
var pos = offset + i;
self.$items[pos] = Ox.ListItem({
construct: self.options.construct,
data: v,
//format: self.options.format,
position: pos,
unique: self.options.unique
});
isSelected(pos) && self.$items[pos].addClass('OxSelected');
self.$items[pos].appendTo(self.$pages[page]);
});
page == 0 && fillFirstPage();
// FIXME: why does emptyPage sometimes have no methods?
//Ox.Log('List', 'emptyPage', $emptyPage)
$emptyPage && $emptyPage.remove && $emptyPage.remove();
self.$pages[page].appendTo(that.$content);
!Ox.isUndefined(callback) && callback(); // fixme: callback necessary? why not bind to event?
}));
}
function loadPages(page, callback) {
Ox.Log('List', 'loadPages', page)
Ox.Log('List', 'loadPages', page);
var counter = 0,
fn = function() {
if (++counter == 3) {
@ -1409,7 +1409,6 @@ Ox.List = function(options, self) {
function updateQuery(callback) { // fixme: shouldn't this be setQuery?
var data;
clear(); // fixme: bad function name ... clear what?
self.requests.push(data = self.options.items({
query: self.options.query
}, function(result) {
@ -1418,6 +1417,7 @@ Ox.List = function(options, self) {
// will reach here before one can bind to the init event,
// and before any sizes can be determined via the DOM
setTimeout(function() {
clear(); // fixme: bad function name ... clear what?
that.triggerEvent(
'init',
Ox.extend(