Handle variants of 'stop' and 'platform' when identifying PTv2 members

(closes #4946)
This commit is contained in:
Bryan Housel
2018-03-27 21:52:52 -04:00
parent f504909394
commit 734957f283
2 changed files with 16 additions and 12 deletions
+2 -2
View File
@@ -11,7 +11,7 @@ export function actionAddMember(relationId, member, memberIndex, insertPair) {
var relation = graph.entity(relationId);
// There are some special rules for Public Transport v2 routes.
var isPTv2 = (member.role === 'stop' || member.role === 'platform');
var isPTv2 = /stop|platform/.test(member.role);
if ((isNaN(memberIndex) || insertPair) && member.type === 'way' && !isPTv2) {
// Try to perform sensible inserts based on how the ways join together
@@ -41,7 +41,7 @@ export function actionAddMember(relationId, member, memberIndex, insertPair) {
var members = [];
for (i = 0; i < relation.members.length; i++) {
var m = relation.members[i];
if (m.role === 'stop' || m.role === 'platform') {
if (/stop|platform/.test(m.role)) {
PTv2members.push(m);
} else {
members.push(m);
+14 -10
View File
@@ -187,13 +187,15 @@ describe('iD.actionAddMember', function() {
iD.osmRelation({id: 'r', members: [
{ id: 'n1', type: 'node', role: 'stop' },
{ id: 'w1', type: 'way', role: 'platform' },
{ id: 'n2', type: 'node', role: 'stop' },
{ id: 'w2', type: 'way', role: 'platform' },
{ id: 'n3', type: 'node', role: 'forward' },
{ id: 'n4', type: 'node', role: 'forward' },
{ id: 'n2', type: 'node', role: 'stop_entry_only' },
{ id: 'w2', type: 'way', role: 'platform_entry_only' },
{ id: 'n3', type: 'node', role: 'stop_exit_only' },
{ id: 'w3', type: 'way', role: 'platform_exit_only' },
{ id: 'n10', type: 'node', role: 'forward' },
{ id: 'n11', type: 'node', role: 'forward' },
{ id: '-', type: 'way', role: 'forward' },
{ id: 'r1', type: 'relation', role: 'forward' },
{ id: 'n5', type: 'node', role: 'forward' }
{ id: 'n12', type: 'node', role: 'forward' }
]})
]);
@@ -201,11 +203,13 @@ describe('iD.actionAddMember', function() {
expect(graph.entity('r').members).to.eql([
{ id: 'n1', type: 'node', role: 'stop' },
{ id: 'w1', type: 'way', role: 'platform' },
{ id: 'n2', type: 'node', role: 'stop' },
{ id: 'w2', type: 'way', role: 'platform' },
{ id: 'n3', type: 'node', role: 'forward' },
{ id: 'n4', type: 'node', role: 'forward' },
{ id: 'n5', type: 'node', role: 'forward' },
{ id: 'n2', type: 'node', role: 'stop_entry_only' },
{ id: 'w2', type: 'way', role: 'platform_entry_only' },
{ id: 'n3', type: 'node', role: 'stop_exit_only' },
{ id: 'w3', type: 'way', role: 'platform_exit_only' },
{ id: 'n10', type: 'node', role: 'forward' },
{ id: 'n11', type: 'node', role: 'forward' },
{ id: 'n12', type: 'node', role: 'forward' },
{ id: '-', type: 'way', role: 'forward' },
{ id: '=', type: 'way', role: 'forward' },
{ id: 'r1', type: 'relation', role: 'forward' }