some more minor quest fixes

This commit is contained in:
Laura Klünder 2024-12-24 23:18:12 +01:00
parent 97c37e7762
commit 14c8079afc
3 changed files with 21 additions and 17 deletions

View file

@ -0,0 +1 @@
import c3nav.mapdata.quests.simple # noqa

View file

@ -9,23 +9,6 @@ from c3nav.mapdata.models.geometry.space import RangingBeacon
from c3nav.mapdata.quests.base import register_quest, Quest, ChangeSetModelForm from c3nav.mapdata.quests.base import register_quest, Quest, ChangeSetModelForm
@register_quest
@dataclass
class RangingBeaconAltitudeQuest(Quest):
quest_type = "ranging_beacon_altitude"
quest_type_label = _('Ranging Beacon Altitude')
form_class = RangingBeaconAltitudeQuestForm
obj: RangingBeacon
@property
def point(self) -> Point:
return mapping(self.obj.geometry)
@classmethod
def _qs_for_request(cls, request):
return RangingBeacon.qs_for_request(request).select_related('space').filter(altitude_quest=True)
class RangingBeaconAltitudeQuestForm(ChangeSetModelForm): class RangingBeaconAltitudeQuestForm(ChangeSetModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -50,3 +33,20 @@ class RangingBeaconAltitudeQuestForm(ChangeSetModelForm):
@property @property
def changeset_title(self): def changeset_title(self):
return f'Altitude Quest: {self.instance.title}' return f'Altitude Quest: {self.instance.title}'
@register_quest
@dataclass
class RangingBeaconAltitudeQuest(Quest):
quest_type = "ranging_beacon_altitude"
quest_type_label = _('Ranging Beacon Altitude')
form_class = RangingBeaconAltitudeQuestForm
obj: RangingBeacon
@property
def point(self) -> Point:
return mapping(self.obj.geometry)
@classmethod
def _qs_for_request(cls, request):
return RangingBeacon.qs_for_request(request).select_related('space').filter(altitude_quest=True)

View file

@ -1369,6 +1369,7 @@ c3nav = {
_modal_click: function (e) { _modal_click: function (e) {
if (!c3nav.modal_noclose && (e.target.id === 'modal' || e.target.id === 'close-modal')) { if (!c3nav.modal_noclose && (e.target.id === 'modal' || e.target.id === 'close-modal')) {
history.back(); history.back();
if (c3nav._questsControl) c3nav._questsControl.reloadQuests();
} }
}, },
_href_modal_open_tab: function (location) { _href_modal_open_tab: function (location) {
@ -1927,6 +1928,7 @@ c3nav = {
if (!c3nav.map) return; if (!c3nav.map) return;
if (c3nav._questsControl) { if (c3nav._questsControl) {
if (!Object.keys(c3nav.user_data.quests).length) c3nav.map.removeControl(c3nav._questsControl); if (!Object.keys(c3nav.user_data.quests).length) c3nav.map.removeControl(c3nav._questsControl);
c3nav._questsControl = null;
} else { } else {
if (Object.keys(c3nav.user_data.quests).length) c3nav._questsControl = (new QuestsControl()).addTo(c3nav.map); if (Object.keys(c3nav.user_data.quests).length) c3nav._questsControl = (new QuestsControl()).addTo(c3nav.map);
} }
@ -2491,6 +2493,7 @@ QuestsControl = L.Control.extend({
}, },
reloadQuests: function() { reloadQuests: function() {
if (!this.questsActive) return;
c3nav_api.get('map/quests/') c3nav_api.get('map/quests/')
.then((data) => { .then((data) => {
for (const quest of data) { for (const quest of data) {