From 14c8079afceee1ccc77e01d4a7719f6b83c01ee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 24 Dec 2024 23:18:12 +0100 Subject: [PATCH] some more minor quest fixes --- src/c3nav/mapdata/quests/__init__.py | 1 + src/c3nav/mapdata/quests/simple.py | 34 +++++++++++++------------- src/c3nav/site/static/site/js/c3nav.js | 3 +++ 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/c3nav/mapdata/quests/__init__.py b/src/c3nav/mapdata/quests/__init__.py index e69de29b..b1e35486 100644 --- a/src/c3nav/mapdata/quests/__init__.py +++ b/src/c3nav/mapdata/quests/__init__.py @@ -0,0 +1 @@ +import c3nav.mapdata.quests.simple # noqa \ No newline at end of file diff --git a/src/c3nav/mapdata/quests/simple.py b/src/c3nav/mapdata/quests/simple.py index fc36c153..b3c13f6d 100644 --- a/src/c3nav/mapdata/quests/simple.py +++ b/src/c3nav/mapdata/quests/simple.py @@ -9,23 +9,6 @@ from c3nav.mapdata.models.geometry.space import RangingBeacon 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): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -50,3 +33,20 @@ class RangingBeaconAltitudeQuestForm(ChangeSetModelForm): @property def changeset_title(self): 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) diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index 944a0f08..ac2f7ccb 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -1369,6 +1369,7 @@ c3nav = { _modal_click: function (e) { if (!c3nav.modal_noclose && (e.target.id === 'modal' || e.target.id === 'close-modal')) { history.back(); + if (c3nav._questsControl) c3nav._questsControl.reloadQuests(); } }, _href_modal_open_tab: function (location) { @@ -1927,6 +1928,7 @@ c3nav = { if (!c3nav.map) return; if (c3nav._questsControl) { if (!Object.keys(c3nav.user_data.quests).length) c3nav.map.removeControl(c3nav._questsControl); + c3nav._questsControl = null; } else { 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() { + if (!this.questsActive) return; c3nav_api.get('map/quests/') .then((data) => { for (const quest of data) {