in annotation panel, make links to define/edit places/events work (fixes #561)

This commit is contained in:
rlx 2012-02-21 11:20:03 +00:00
parent 202d11177b
commit db6f68681a
3 changed files with 57 additions and 39 deletions

View file

@ -269,7 +269,6 @@ Ox.ListCalendar = function(options, self) {
return !!event.type;
}),
height: self.options.height,
selected: self.options.selected,
showControls: self.options.showControls,
showToolbar: true,
showZoombar: true,
@ -544,6 +543,11 @@ Ox.ListCalendar = function(options, self) {
.$element
);
// if loaded with selection, set calendar and form
self.options.selected && self.$list.triggerEvent({
select: {ids: [self.options.selected]}
});
function addEvent() {
Ox.Log('Calendar', 'ADD', self.$calendar.getBounds())
var bounds = self.$calendar.getBounds(),

View file

@ -355,6 +355,15 @@ Ox.ListMap = function(options, self) {
select: selectItem
});
// if loaded with selection, set map and form
self.options.selected && self.$list.bindEventOnce({
load: function() {
self.$list.triggerEvent({
select: {ids: [self.options.selected]}
});
}
});
self.$listStatusbar = Ox.Bar({
size: 16
});
@ -369,7 +378,6 @@ Ox.ListMap = function(options, self) {
findPlaceholder: 'Find on Map',
height: self.options.height,
places: self.options.places,
selected: self.options.selected,
//statusbar: true,
showControls: self.options.showControls,
showLabels: self.options.showLabels,

View file

@ -1141,47 +1141,53 @@ Ox.Map = function(options, self) {
function selectPlace(id, zoom) {
Ox.print('SELECT PLACE', id)
// id can be null (deselect)
var place,
selected = getSelectedMarker();
Ox.Log('Map', 'Ox.Map selectPlace()', id, selected);
if (id != selected) {
place = getPlaceById(selected);
place && place.deselect();
if (id !== null) {
place = getPlaceById(id);
if (place) {
select();
} else {
// async && place doesn't exist yet
self.options.places({
keys: self.placeKeys,
query: {
conditions: [
{key: 'id', value: id, operator: '=='}
],
operator: '&'
}
}, function(result) {
if (result.data.items.length) {
place = new Ox.MapPlace(Ox.extend({
map: that
}, result.data.items[0])).add();
self.places.push(place);
select();
if (zoom) {
zoomToPlace();
} else {
panToPlace();
var place, selected = getSelectedMarker();
if (!self.loaded) {
setTimeout(function() {
selectPlace(id, zoom)
}, 1000);
} else {
Ox.Log('Map', 'Ox.Map selectPlace()', id, selected);
if (id != selected) {
place = getPlaceById(selected);
place && place.deselect();
if (id !== null) {
place = getPlaceById(id);
if (place) {
select();
} else {
// async && place doesn't exist yet
self.options.places({
keys: self.placeKeys,
query: {
conditions: [
{key: 'id', value: id, operator: '=='}
],
operator: '&'
}
}
});
}, function(result) {
if (result.data.items.length) {
place = new Ox.MapPlace(Ox.extend({
map: that
}, result.data.items[0])).add();
self.places.push(place);
select();
if (zoom) {
zoomToPlace();
} else {
panToPlace();
}
}
});
}
} else {
place = null;
select();
}
} else {
place = null;
select();
}
}
function select() {
Ox.print('select...', place)
place && place.select();
self.options.selected = id;
setPlaceControls(place);
@ -1418,7 +1424,7 @@ Ox.Map = function(options, self) {
}
}
} else if (key == 'selected') {
self.loaded && selectPlace(value || null);
selectPlace(value || null);
} else if (key == 'type') {
}