even more improvements to lists
This commit is contained in:
parent
489e72a8af
commit
deb35064a1
1 changed files with 92 additions and 73 deletions
|
@ -659,7 +659,6 @@ requires
|
|||
return {
|
||||
|
||||
cancel: function() {
|
||||
var index;
|
||||
if (arguments.length == 0) {
|
||||
requests = {};
|
||||
} else if (Ox.isFunction(arguments[0])) {
|
||||
|
@ -1094,11 +1093,11 @@ requires
|
|||
*/
|
||||
if (Ox.isObject(arguments[0])) {
|
||||
$.each(arguments[0], function(event, data) {
|
||||
//Ox.print(that.id, self.options.id, 'trigger', event, data);
|
||||
Ox.print(that.id, self.options.id, 'trigger', event, data);
|
||||
self.$eventHandler.trigger('ox_' + event, data);
|
||||
});
|
||||
} else {
|
||||
//Ox.print('??', that.id, self.options ? self.options.id : '', 'trigger', arguments[0], arguments[1] || {});
|
||||
Ox.print(that.id, self.options ? self.options.id : '', 'trigger', arguments[0], arguments[1] || {});
|
||||
self.$eventHandler.trigger('ox_' + arguments[0], arguments[1] || {});
|
||||
}
|
||||
return that;
|
||||
|
@ -4339,7 +4338,7 @@ requires
|
|||
self.options.type == 'image' && self.$menu.addClass('OxRight');
|
||||
|
||||
function clickMenu(event, data) {
|
||||
//Ox.print('%% clickMenu')
|
||||
that.triggerEvent('click', data);
|
||||
}
|
||||
|
||||
function changeMenu(event, data) {
|
||||
|
@ -6107,6 +6106,8 @@ requires
|
|||
ids: [],
|
||||
itemMargin: self.options.type == 'text' ? 0 : 8, // 2 x 4 px margin ... fixme: the 2x should be computed later
|
||||
keyboardEvents: {
|
||||
key_backspace: deleteItems,
|
||||
key_delete: deleteItems,
|
||||
key_end: scrollToFirst,
|
||||
key_enter: open,
|
||||
key_home: scrollToLast,
|
||||
|
@ -6284,6 +6285,13 @@ requires
|
|||
return $page;
|
||||
}
|
||||
|
||||
function deleteItems() {
|
||||
var ids = getSelectedIds();
|
||||
ids.length && that.triggerEvent('delete', {
|
||||
ids: ids
|
||||
});
|
||||
}
|
||||
|
||||
function deselect(pos) {
|
||||
if (isSelected(pos)) {
|
||||
self.selected.splice(self.selected.indexOf(pos), 1);
|
||||
|
@ -6594,6 +6602,7 @@ requires
|
|||
self.$pages[page] = new Ox.ListPage().css(getPageCSS(page));
|
||||
$.each(result.data.items, function(i, v) {
|
||||
var pos = offset + i;
|
||||
self.ids[pos] = v[self.options.unique]; // fixme: why not use self.$items[pos].options('id')?
|
||||
self.$items[pos] = new Ox.ListItem({
|
||||
construct: self.options.construct,
|
||||
data: v,
|
||||
|
@ -6602,17 +6611,14 @@ requires
|
|||
position: pos,
|
||||
unique: self.options.unique
|
||||
});
|
||||
self.ids[pos] = v[self.options.unique]; // fixme: why not use self.$items[pos].options('id')?
|
||||
if (isSelected(pos)) {
|
||||
//Ox.print('pos', pos, 'isSelected')
|
||||
self.$items[pos].addClass('OxSelected');
|
||||
}
|
||||
isSelected(pos) && self.$items[pos].addClass('OxSelected');
|
||||
self.$items[pos].appendTo(self.$pages[page]);
|
||||
});
|
||||
self.options.type == 'text' && page == 0 && fillFirstPage();
|
||||
$emptyPage.remove();
|
||||
self.$pages[page].appendTo(that.$content);
|
||||
!Ox.isUndefined(callback) && callback();
|
||||
!Ox.isUndefined(callback) && callback(); // fixme: callback necessary? why not bind to event?
|
||||
that.triggerEvent('load');
|
||||
}));
|
||||
} else {
|
||||
//Ox.print('loading a page from cache, this should probably not happen -----------')
|
||||
|
@ -6927,6 +6933,11 @@ requires
|
|||
self.$items[pos].removeClass('OxSelected');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ids.forEach(function(id, i) {
|
||||
var pos = getPositionById(id);
|
||||
select(pos);
|
||||
});
|
||||
}
|
||||
// fixme: implement the rest of this
|
||||
/*
|
||||
|
@ -7004,7 +7015,7 @@ requires
|
|||
clear();
|
||||
self.requests.push(self.options.request({}, function(result) {
|
||||
var keys = {};
|
||||
that.triggerEvent('load', result.data);
|
||||
that.triggerEvent('init', result.data);
|
||||
self.rowLength = getRowLength();
|
||||
self.pageLength = self.options.orientation == 'both' ?
|
||||
self.pageLengthByRowLength[self.rowLength] :
|
||||
|
@ -7076,7 +7087,12 @@ requires
|
|||
return that;
|
||||
};
|
||||
|
||||
that.reload = function() {
|
||||
that.reloadList = function() {
|
||||
updateQuery();
|
||||
return that;
|
||||
}
|
||||
|
||||
that.reloadPages = function() {
|
||||
//Ox.print('---------------- list reload, page', self.page)
|
||||
var page = self.page;
|
||||
clear();
|
||||
|
@ -7353,7 +7369,7 @@ requires
|
|||
})
|
||||
.bindEvent({
|
||||
edit: function(event, data) {
|
||||
editCell(data.id, data.key, data.item, data.cell);
|
||||
that.editCell(data.id, data.key);
|
||||
},
|
||||
select: function(event, data) {
|
||||
self.options.selected = data.ids;
|
||||
|
@ -7388,7 +7404,7 @@ requires
|
|||
return v.id;
|
||||
})
|
||||
});
|
||||
that.$body.reload();
|
||||
that.$body.reloadPages();
|
||||
}
|
||||
|
||||
function changeColumns(event, data) {
|
||||
|
@ -7598,54 +7614,6 @@ requires
|
|||
that.$body.clearCache();
|
||||
}
|
||||
|
||||
function editCell(id, key) {
|
||||
//Ox.print('editCell')
|
||||
var $item = getItem(id),
|
||||
$cell = getCell(id, key),
|
||||
$input,
|
||||
html = $cell.html(),
|
||||
index = getColumnIndexById(key),
|
||||
column = self.options.columns[index],
|
||||
width = column.width;
|
||||
$cell.empty()
|
||||
.addClass('OxEdit')
|
||||
.css({
|
||||
width: width + 'px'
|
||||
});
|
||||
$input = Ox.Input({
|
||||
autovalidate: column.input.autovalidate,
|
||||
style: 'square',
|
||||
value: html,
|
||||
width: width
|
||||
})
|
||||
.bind({
|
||||
mousedown: function(e) {
|
||||
// keep mousedown from reaching list
|
||||
e.stopPropagation();
|
||||
}
|
||||
})
|
||||
.bindEvent({
|
||||
blur: submit,
|
||||
})
|
||||
.appendTo($cell)
|
||||
.focus();
|
||||
function submit() {
|
||||
var value = $input.value();
|
||||
//$input.loseFocus().remove();
|
||||
// fixme: leaky, inputs remain in focus stack
|
||||
$cell.removeClass('OxEdit')
|
||||
.css({
|
||||
width: (width - 8) + 'px'
|
||||
})
|
||||
.html(value)
|
||||
that.triggerEvent('submit', {
|
||||
id: id,
|
||||
key: key,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getCell(id, key) {
|
||||
//Ox.print('getCell', id, key)
|
||||
var $item = getItem(id);
|
||||
|
@ -7800,8 +7768,60 @@ requires
|
|||
}
|
||||
};
|
||||
|
||||
that.closePreview = function() {
|
||||
that.$body.closePreview();
|
||||
// fixme: doesn't work, doesn't return that
|
||||
that.closePreview = that.$body.closePreview;
|
||||
|
||||
that.editCell = function(id, key) {
|
||||
//Ox.print('editCell')
|
||||
var $item = getItem(id),
|
||||
$cell = getCell(id, key),
|
||||
$input,
|
||||
html = $cell.html(),
|
||||
index = getColumnIndexById(key),
|
||||
column = self.options.columns[index],
|
||||
width = column.width;
|
||||
$cell.empty()
|
||||
.addClass('OxEdit')
|
||||
.css({
|
||||
width: width + 'px'
|
||||
});
|
||||
$input = Ox.Input({
|
||||
autovalidate: column.input.autovalidate,
|
||||
style: 'square',
|
||||
value: html,
|
||||
width: width
|
||||
})
|
||||
.bind({
|
||||
mousedown: function(e) {
|
||||
// keep mousedown from reaching list
|
||||
e.stopPropagation();
|
||||
}
|
||||
})
|
||||
.bindEvent({
|
||||
blur: submit,
|
||||
})
|
||||
.appendTo($cell)
|
||||
.focus();
|
||||
function submit() {
|
||||
var value = $input.value();
|
||||
//$input.loseFocus().remove();
|
||||
// fixme: leaky, inputs remain in focus stack
|
||||
$cell.removeClass('OxEdit')
|
||||
.css({
|
||||
width: (width - 8) + 'px'
|
||||
})
|
||||
.html(value)
|
||||
that.triggerEvent('submit', {
|
||||
id: id,
|
||||
key: key,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
that.reloadList = function() {
|
||||
that.$body.reloadList();
|
||||
return that;
|
||||
};
|
||||
|
||||
that.resizeColumn = function(id, width) {
|
||||
|
@ -9412,7 +9432,6 @@ requires
|
|||
.dblclick(dblclickTitlebar)
|
||||
.appendTo(that),
|
||||
$switch = new Ox.Button({
|
||||
id: self.options.id + 'Switch',
|
||||
style: 'symbol',
|
||||
title: title,
|
||||
type: 'image',
|
||||
|
@ -9425,13 +9444,13 @@ requires
|
|||
.appendTo($titlebar);
|
||||
if (self.options.menu.length) {
|
||||
that.$menu = new Ox.Select({
|
||||
id: self.options.id + 'Menu',
|
||||
items: self.options.menu,
|
||||
max: 0,
|
||||
min: 0,
|
||||
selectable: false,
|
||||
type: 'image'
|
||||
})
|
||||
.bindEvent('click', clickMenu)
|
||||
.bindEvent({click: clickMenu})
|
||||
.appendTo($titlebar)
|
||||
}
|
||||
that.$content = new Ox.Element()
|
||||
|
@ -9444,8 +9463,8 @@ requires
|
|||
marginTop: -that.$content.height() + 'px'
|
||||
});
|
||||
}
|
||||
function clickMenu() {
|
||||
|
||||
function clickMenu(event, data) {
|
||||
that.triggerEvent('click', data);
|
||||
}
|
||||
function dblclickTitlebar(e) {
|
||||
if (!$(e.target).hasClass('OxButton')) {
|
||||
|
|
Loading…
Reference in a new issue