diff --git a/build/js/ox.ui.js b/build/js/ox.ui.js
index 816970b2..64005cd0 100644
--- a/build/js/ox.ui.js
+++ b/build/js/ox.ui.js
@@ -5829,7 +5829,9 @@ requires
}
function constructItem(data) {
- var data = self.options.item(data, self.options.sort, self.options.size),
+ var data = !$.isEmptyObject(data) ?
+ self.options.item(data, self.options.sort, self.options.size) :
+ {height: 8, width: 5},
ratio = data.width / data.height;
return new Ox.IconItem($.extend(data, {
height: self.options.size / (ratio <= 1 ? 1 : ratio),
@@ -5886,6 +5888,8 @@ requires
Ox.IconItem = function(options, self) {
+ Ox.print('IconItem', options, self)
+
var self = self || {},
that = new Ox.Element({}, self)
.defaults({
@@ -5932,8 +5936,8 @@ requires
})
.mousedown(mousedown)
.mouseenter(mouseenter)
- .mouseleave(mouseleave)
- .one('load', load);
+ .mouseleave(mouseleave);
+ self.options.url && that.$iconImage.one('load', load);
that.$textBox = $('
')
.addClass('OxText')
.css({
@@ -6220,6 +6224,23 @@ requires
});
}
+ function constructEmptyPage(page) {
+ Ox.print('cEP', page)
+ var i, $page = new Ox.ListPage().css(getPageCSS(page));
+ for (i = 0; i < (page < self.pages - 1 ?
+ self.pageLength : self.listLength % self.pageLength); i++
+ ) {
+ // fixme: why does chainging fail here?
+ var $item = new Ox.ListItem({
+ construct: self.options.construct
+ });
+ $item.addClass('OxEmpty').removeClass('OxTarget');
+ $item.appendTo($page);
+ }
+ Ox.print('cEP done')
+ return $page;
+ }
+
function deselect(pos) {
if (isSelected(pos)) {
self.selected.splice(self.selected.indexOf(pos), 1);
@@ -6240,13 +6261,10 @@ requires
var height = getHeight(),
lastItemHeight = height % self.options.itemHeight || self.options.itemHeight,
visibleItems = Math.ceil(height / self.options.itemHeight);
- if (self.$items.length < visibleItems) {
- $.each(Ox.range(self.$items.length, visibleItems), function(i, v) {
+ if (self.listLength < visibleItems) {
+ $.each(Ox.range(self.listLength, visibleItems), function(i, v) {
var $item = new Ox.ListItem({
construct: self.options.construct,
- data: {},
- id: '',
- position: v
});
$item.addClass('OxEmpty').removeClass('OxTarget');
if (v == visibleItems - 1) {
@@ -6336,6 +6354,19 @@ requires
return parseInt(pos / self.options.pageLength);
}
+ function getPageCSS(page) {
+ return self.options.orientation == 'horizontal' ? {
+ left: (page * self.pageWidth + self.listMargin / 2) + 'px',
+ top: (self.listMargin / 2) + 'px',
+ width: (page < self.pages - 1 ? self.pageWidth :
+ self.listLength % self.pageLength *
+ (self.options.itemWidth + self.itemMargin)) + 'px'
+ } : {
+ top: (page * self.pageHeight + self.listMargin / 2) + 'px',
+ width: self.pageWidth + 'px'
+ }
+ }
+
function getPageHeight() {
return Math.ceil(self.pageLength * (self.options.itemHeight + self.itemMargin) / self.rowLength);
}
@@ -6440,28 +6471,17 @@ requires
offset = page * self.pageLength,
range = [offset, offset + (page < self.pages - 1 ?
self.pageLength : self.listLength % self.pageLength)];
- Ox.print('is page', page, 'undefined?', Ox.isUndefined(self.$pages[page]))
if (Ox.isUndefined(self.$pages[page])) { // fixme: unload will have made this undefined already
+ self.$pages[page] = constructEmptyPage(page);
+ self.options.type == 'text' && page == 0 && fillFirstPage();
+ self.$pages[page].appendTo(that.$content);
self.requests.push(self.options.request({
keys: keys,
range: range,
sort: self.options.sort
}, function(result) {
- self.$pages[page] = new Ox.ListPage();
- if (self.options.orientation == 'horizontal') {
- self.$pages[page].css({
- left: (page * self.pageWidth + self.listMargin / 2) + 'px',
- top: (self.listMargin / 2) + 'px',
- width: (page < self.pages - 1 ? self.pageWidth :
- self.listLength % self.pageLength *
- (self.options.itemWidth + self.itemMargin)) + 'px'
- });
- } else {
- self.$pages[page].css({
- top: (page * self.pageHeight + self.listMargin / 2) + 'px',
- width: self.pageWidth + 'px'
- });
- }
+ var $emptyPage = $.extend({}, self.$pages[page]);
+ self.$pages[page] = new Ox.ListPage().css(getPageCSS(page));
$.each(result.data.items, function(i, v) {
var pos = offset + i;
self.$items[pos] = new Ox.ListItem({
@@ -6478,9 +6498,8 @@ requires
}
self.$items[pos].appendTo(self.$pages[page]);
});
- if (self.options.type == 'text' && page == 0) {
- fillFirstPage();
- }
+ self.options.type == 'text' && page == 0 && fillFirstPage();
+ $emptyPage.remove();
self.$pages[page].appendTo(that.$content);
!Ox.isUndefined(callback) && callback();
}));