fix bugs in treelist where the icon would not update, items would not expand, and expanding items would be slow
This commit is contained in:
parent
f2dbfbd1e5
commit
b3e7945a96
3 changed files with 67 additions and 58 deletions
|
|
@ -33,11 +33,9 @@ Ox.TreeList = function(options, self) {
|
|||
|
||||
if (self.options.data) {
|
||||
self.options.items = [];
|
||||
//Ox.print('d', self.options.data, 'i', self.options.items)
|
||||
Ox.forEach(Ox.sort(Ox.keys(self.options.data)), function(key) {
|
||||
self.options.items.push(parseData(key, self.options.data[key]));
|
||||
});
|
||||
//Ox.print('d', self.options.data, 'i', self.options.items)
|
||||
}
|
||||
|
||||
that.$element = Ox.List({
|
||||
|
|
@ -48,7 +46,7 @@ Ox.TreeList = function(options, self) {
|
|||
max: self.options.max,
|
||||
min: self.options.min,
|
||||
unique: 'id'
|
||||
}, Ox.extend({}, self))
|
||||
}, Ox.copy(self))
|
||||
.addClass('OxTextList OxTreeList')
|
||||
.css({
|
||||
width: self.options.width + 'px'
|
||||
|
|
@ -72,6 +70,7 @@ Ox.TreeList = function(options, self) {
|
|||
function constructItem(data) {
|
||||
var $item = $('<div>'), //.css({width: self.options.width + 'px'}),
|
||||
padding = (data.level + !data.items) * 16 - 8;
|
||||
if (data.title.indexOf('COUNTRIES') > -1) Ox.print('DATA...', data);
|
||||
if (data.level || !data.items) {
|
||||
$('<div>')
|
||||
.addClass('OxCell OxTarget')
|
||||
|
|
@ -137,7 +136,8 @@ Ox.TreeList = function(options, self) {
|
|||
function parseData(key, value) {
|
||||
//Ox.print('parseData', key, value)
|
||||
var ret = {
|
||||
id: Ox.uid(),
|
||||
expanded: false,
|
||||
id: Ox.uid().toString(),
|
||||
title: key.toString() + ': '
|
||||
},
|
||||
type = Ox.typeOf(value);
|
||||
|
|
@ -148,9 +148,9 @@ Ox.TreeList = function(options, self) {
|
|||
});
|
||||
} else {
|
||||
ret.title += (
|
||||
type == 'function' ?
|
||||
value.toString().split('{')[0] :
|
||||
JSON.stringify(value)
|
||||
type == 'function'
|
||||
? value.toString().split('{')[0]
|
||||
: JSON.stringify(value)
|
||||
);
|
||||
}
|
||||
return ret;
|
||||
|
|
@ -163,10 +163,14 @@ Ox.TreeList = function(options, self) {
|
|||
items.forEach(function(item, i) {
|
||||
var item_ = Ox.extend({
|
||||
level: level
|
||||
}, item, item.items ? {
|
||||
items: !!item.expanded ?
|
||||
parseItems(item.items, level + 1) : []
|
||||
} : {});
|
||||
}, item, item.items
|
||||
? {
|
||||
items: !!item.expanded
|
||||
? parseItems(item.items, level + 1)
|
||||
: []
|
||||
}
|
||||
: {}
|
||||
);
|
||||
ret.push(item_);
|
||||
item.items && Ox.merge(ret, item_.items);
|
||||
});
|
||||
|
|
@ -176,7 +180,6 @@ Ox.TreeList = function(options, self) {
|
|||
function toggleItem(item, expanded) {
|
||||
var $img, pos;
|
||||
item.expanded = expanded;
|
||||
//getItemById(item.id).expanded = expanded;
|
||||
that.$element.find('.OxItem').each(function() {
|
||||
var $item = $(this);
|
||||
if ($item.data('id') == item.id) {
|
||||
|
|
@ -185,15 +188,19 @@ Ox.TreeList = function(options, self) {
|
|||
return false;
|
||||
}
|
||||
});
|
||||
//that.$element.value(item.id, 'expanded', expanded);
|
||||
$img.attr({
|
||||
src: Ox.UI.getImageURL(
|
||||
'symbol' + (expanded ? 'Down' : 'Right')
|
||||
)
|
||||
});
|
||||
that.$element.value(item.id, 'expanded', expanded);
|
||||
expanded ?
|
||||
that.$element.addItems(pos + 1, parseItems(item.items, item.level + 1)) :
|
||||
that.$element.removeItems(pos + 1, parseItems(item.items, item.level + 1).length);
|
||||
expanded
|
||||
? that.$element.addItems(
|
||||
pos + 1, parseItems(item.items, item.level + 1)
|
||||
)
|
||||
: that.$element.removeItems(
|
||||
pos + 1, parseItems(item.items, item.level + 1).length
|
||||
);
|
||||
}
|
||||
|
||||
function toggleItems(data) {
|
||||
|
|
@ -209,7 +216,7 @@ Ox.TreeList = function(options, self) {
|
|||
if (key == 'data') {
|
||||
|
||||
} else if (key == 'width') {
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue