From 9a6353e2cbce9caaa2ed013079995c5b7b3b3e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 27 Dec 2016 00:52:22 +0100 Subject: [PATCH] add stuffedarea but with no routing support yet --- src/c3nav/editor/static/editor/js/editor.js | 3 ++- src/c3nav/mapdata/models/geometry.py | 12 ++++++++++++ src/c3nav/mapdata/models/level.py | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/c3nav/editor/static/editor/js/editor.js b/src/c3nav/editor/static/editor/js/editor.js index 426f1cc1..51d63154 100644 --- a/src/c3nav/editor/static/editor/js/editor.js +++ b/src/c3nav/editor/static/editor/js/editor.js @@ -285,7 +285,8 @@ editor = { 'arealocation': '#0099FF', 'escalator': '#FF9900', 'escalatorslope': '#DD7700', - 'oneway': '#FF00FF' + 'oneway': '#FF00FF', + 'stuffedarea': '#D9A3A3' }, _line_draw_geometry_style: function(style) { style.stroke = true; diff --git a/src/c3nav/mapdata/models/geometry.py b/src/c3nav/mapdata/models/geometry.py index 33f7d1b0..f00a6d1e 100644 --- a/src/c3nav/mapdata/models/geometry.py +++ b/src/c3nav/mapdata/models/geometry.py @@ -168,6 +168,18 @@ class Outside(GeometryMapItemWithLevel): default_related_name = 'outsides' +class StuffedArea(GeometryMapItemWithLevel): + """ + A slow area with many tables or similar. Avoid it from routing by slowing it a bit down + """ + geomtype = 'polygon' + + class Meta: + verbose_name = _('Stuffed Area') + verbose_name_plural = _('Stuffed Areas') + default_related_name = 'stuffedareas' + + class Escalator(GeometryMapItemWithLevel): """ An escalator area diff --git a/src/c3nav/mapdata/models/level.py b/src/c3nav/mapdata/models/level.py index 7c5c0916..38091382 100644 --- a/src/c3nav/mapdata/models/level.py +++ b/src/c3nav/mapdata/models/level.py @@ -263,3 +263,7 @@ class LevelGeometries(): for stair in assert_multilinestring(self.stairs): left.append(stair.parallel_offset(0.15, 'right', join_style=JOIN_STYLE.mitre)) return cascaded_union(left).buffer(0.20, join_style=JOIN_STYLE.mitre, cap_style=CAP_STYLE.flat) + + @cached_property + def stuffedareas(self): + return cascaded_union([stuffedarea.geometry for stuffedarea in self.query('stuffedareas')])