only cache width on item construction (not on list resize)

This commit is contained in:
rolux 2011-05-24 20:32:59 +02:00
parent 4eef6ece64
commit c31ff816c1
3 changed files with 7 additions and 5 deletions

View file

@ -23,7 +23,7 @@ Ox.load('Geo', function() {
area = Math.sqrt(city.population * 100),
latSize = area / Ox.EARTH_CIRCUMFERENCE * 360,
lngSize = area * Ox.getDegreesPerMeter(city.latitude);
return city.population > 400000/*400000*/ ? {
return city.population > 100000/*400000*/ ? {
area: city.population * 100,
countryCode: countryCode,
editable: true,

View file

@ -417,7 +417,7 @@ Ox.List = function(options, self) {
function emptyFirstPage() {
//Ox.print('emptyFirstPage', self.$pages);
self.$pages[0] && self.$pages[0].find('.OxEmpty').removeElement();
self.$pages[0] && self.$pages[0].find('.OxEmpty').remove();
}
function fillFirstPage() {

View file

@ -367,7 +367,7 @@ Ox.TextList = function(options, self) {
var $item = $('<div>')
.addClass('OxTarget')
.css({
width: getItemWidth() + 'px'
width: getItemWidth(true) + 'px'
});
self.visibleColumns.forEach(function(v, i) {
//Ox.print(data[v.id], '(--value--)')
@ -525,13 +525,15 @@ Ox.TextList = function(options, self) {
return $item;
}
function getItemWidth() {
function getItemWidth(cached) {
// fixme: this gets called for every constructItem and is slooow
// the proper way to fix this would be to find out how and when
// that.$element.width() might change... which would probably
// mean binding to every SplitPanel and window resize...
// for now, use a cached value
if (!self.cachedWidth || self.cachedWidthTime < +new Date() - 5000) {
if (!cached) {
self.cachedWidth = that.$element.width();
} else if (!self.cachedWidth || self.cachedWidthTime < +new Date() - 5000) {
self.cachedWidth = that.$element.width();
self.cachedWidthTime = +new Date();
}