From 90da9fe783d0955f190710a13a903b0170219fa0 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Aug 2021 11:53:42 +0200 Subject: [PATCH 1/3] show route type in route relation display name This displays e.g. `hiking route ("foo-bar")` instead of just `route ("foo-bar")`, making it easier to distinguish different route relations. --- src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java | 4 ++++ .../openstreetmap/josm/data/osm/DefaultNameFormatterTest.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java index d365632b180..85eab261553 100644 --- a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java +++ b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java @@ -412,6 +412,10 @@ public Comparator> getRelationComparator() { private static String getRelationTypeName(IRelation relation) { // see https://josm.openstreetmap.de/browser/osm/applications/editors/josm/i18n/specialmessages.java String name = trc("Relation type", relation.get("type")); + if (relation.hasTag("type", "route") && relation.hasKey("route")) { + String route = trc("Route type", relation.get("route")); + name = route + " " + name; + } if (name == null) { name = relation.hasKey("public_transport") ? tr("public transport") : null; } diff --git a/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java index 3c1ae6e431c..94a11d1a255 100644 --- a/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java +++ b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java @@ -102,7 +102,7 @@ void testRelationName() { getFormattedRelationName("X=Y")); assertEquals("relation (\"Foo\", 0 members)", getFormattedRelationName("name=Foo")); - assertEquals("route (\"123\", 0 members)", + assertEquals("tram route (\"123\", 0 members)", getFormattedRelationName("type=route route=tram ref=123")); assertEquals("multipolygon (\"building\", 0 members)", getFormattedRelationName("type=multipolygon building=yes")); From db91cb8836663728e51e395eabdb18846412c05d Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Aug 2021 14:01:03 +0200 Subject: [PATCH 2/3] add from-to as an option for display names Some routes (in particular node networks) have no proper name of their own, but do have a from and/or to attribute set that gives at least some description of the route. Note that these routes often do have the `name` or `note` attribute set using an explicit "from-to" value, but these attributes are not really meant for that, so for example the Swiss hiking route tagging now recommends settings only `from` and `to`, not `name` or `note`. See e.g. https://wiki.openstreetmap.org/wiki/DE:Switzerland/HikingNetwork#Wanderwegenetz As an example of such a route, see https://www.openstreetmap.org/relation/13126425 For these routes, setting just `from` or just `to` is also possible (in particular for node network routes that start at an unnamed node/guidepost). In this case, the missing attribute is replaced by `?`. This commit modifies the `relation.nameOrder` preference, adding one extra special value `from-to` which is handled specially. --- .../openstreetmap/josm/data/osm/DefaultNameFormatter.java | 7 +++++++ .../josm/data/osm/DefaultNameFormatterTest.java | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java index 85eab261553..406a73f423c 100644 --- a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java +++ b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java @@ -93,6 +93,7 @@ public static void unregisterFormatHook(NameFormatterHook hook) { private static final String[] DEFAULT_NAMING_TAGS_FOR_RELATIONS = { "name", "ref", + "from-to", // "amenity", "landuse", @@ -451,6 +452,12 @@ private static String getRelationTypeName(IRelation relation) { private static String getNameTagValue(IRelation relation, String nameTag) { if ("name".equals(nameTag)) { return formatLocalName(relation); + } else if ("from-to".equals(nameTag)) { + String from = trcLazy("from", I18n.escape(relation.get("from"))); + String to = trcLazy("to", I18n.escape(relation.get("to"))); + if (from != null || to != null) + return (from != null ? from : "?") + "-" + (to != null ? to : "?"); + return null; } else if (":LocationCode".equals(nameTag)) { return relation.keys() .filter(m -> m.endsWith(nameTag)) diff --git a/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java index 94a11d1a255..d813b348809 100644 --- a/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java +++ b/test/unit/org/openstreetmap/josm/data/osm/DefaultNameFormatterTest.java @@ -104,6 +104,14 @@ void testRelationName() { getFormattedRelationName("name=Foo")); assertEquals("tram route (\"123\", 0 members)", getFormattedRelationName("type=route route=tram ref=123")); + assertEquals("bus route (\"foo\", 0 members)", + getFormattedRelationName("type=route route=bus from=a to=b name=foo")); + assertEquals("bus route (\"a-b\", 0 members)", + getFormattedRelationName("type=route route=bus from=a to=b")); + assertEquals("bus route (\"a-?\", 0 members)", + getFormattedRelationName("type=route route=bus from=a")); + assertEquals("bus route (\"?-b\", 0 members)", + getFormattedRelationName("type=route route=bus to=b")); assertEquals("multipolygon (\"building\", 0 members)", getFormattedRelationName("type=multipolygon building=yes")); assertEquals("multipolygon (\"123\", 0 members)", From 9351f6ee9bfd58ed1ff0b1b89194e1e298dc4dde Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Tue, 1 Aug 2023 22:05:51 +0200 Subject: [PATCH 3/3] add space between relation name_template output and other info --- src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java index 406a73f423c..611377952c6 100644 --- a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java +++ b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java @@ -358,7 +358,7 @@ private static StringBuilder formatRelationNameAndType(IRelation relation, St result.append(" (").append(relationName).append(", "); } else { preset.nameTemplate.appendText(result, (TemplateEngineDataProvider) relation); - result.append('('); + result.append(" ("); } return result; }