1
0
Fork 0
forked from 0x2620/oxjs

better behaviour when editing (only send changed key/value pairs, only reload list if sort order is affected)

This commit is contained in:
rolux 2011-05-30 08:54:45 +02:00
commit 1eebdf3805
2 changed files with 16 additions and 10 deletions

View file

@ -60,8 +60,11 @@ Ox.load('Geo', function() {
}, },
editPlace: function(data, callback) { editPlace: function(data, callback) {
var place = Ox.getObjectById(places, data.id); var place = Ox.getObjectById(places, data.id);
place = Ox.extend(place, data, { Ox.forEach(data, function(value, key) {
geonameSort: getGeonameSort(data.geoname) place[key] = value;
if (key == 'geoname') {
place.geonameSort = getGeonameSort(place.geoname);
}
}); });
callback({ callback({
result: {code: 200, text: 'OK'} result: {code: 200, text: 'OK'}

View file

@ -347,7 +347,7 @@ Ox.ListMap = function(options, self) {
self.options.places, self.selectedPlace self.options.places, self.selectedPlace
).name = data.value; ).name = data.value;
} else { } else {
editPlace(); editPlace(['name']);
} }
self.$map.value(self.selectedPlace, 'name', data.value); self.$map.value(self.selectedPlace, 'name', data.value);
} }
@ -363,7 +363,6 @@ Ox.ListMap = function(options, self) {
country = Ox.getCountryByGeoname(geoname), country = Ox.getCountryByGeoname(geoname),
countryCode = country ? country.code : '', countryCode = country ? country.code : '',
isResult = self.selectedPlace[0] == '_'; isResult = self.selectedPlace[0] == '_';
Ox.print('IS RESULT?', isResult, self.selectedPlace)
if (!isResult) { if (!isResult) {
self.$list.value(self.selectedPlace, 'geoname', geoname); self.$list.value(self.selectedPlace, 'geoname', geoname);
self.$list.value(self.selectedPlace, 'countryCode', countryCode); self.$list.value(self.selectedPlace, 'countryCode', countryCode);
@ -376,7 +375,7 @@ Ox.ListMap = function(options, self) {
if (!self.isAsync) { if (!self.isAsync) {
} else { } else {
editPlace(); editPlace(['geoname']);
} }
} }
}), }),
@ -574,11 +573,15 @@ Ox.ListMap = function(options, self) {
self.$placeButton.options({title: 'Remove Place'}); self.$placeButton.options({title: 'Remove Place'});
} }
function editPlace() { function editPlace(keys) {
self.options.editPlace(Ox.extend(self.$placeForm.values(), { values = Ox.filter(self.$placeForm.values(), function(values, key) {
id: self.selectedPlace return keys.indexOf(key) > -1;
}), function() { });
self.$list.reloadList(); values.id = self.selectedPlace;
self.options.editPlace(values, function() {
if (keys.indexOf(self.$list.options('sort')[0].key) > -1) {
self.$list.reloadList();
}
}); });
} }