put indexes on type that do not break when nulls occur in related type or parent type columns
Put selected event id in the route as "highlight/state".

This entails both putting it in, and navigating to it when it has changed.
do not check links for existence - they can be blank
get participants by case-insensitive and accent agnostic order
show the place name in the thing summary event detail
don't show linkless events as linked
use the closest other point that is different to frame the bounds when focusing on a particular event