From 734957f283ee12103c2849279f4e93cadfdb62a6 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Tue, 27 Mar 2018 21:52:52 -0400 Subject: [PATCH] Handle variants of 'stop' and 'platform' when identifying PTv2 members (closes #4946) --- modules/actions/add_member.js | 4 ++-- test/spec/actions/add_member.js | 24 ++++++++++++++---------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/actions/add_member.js b/modules/actions/add_member.js index 4218fffc3..95874213c 100644 --- a/modules/actions/add_member.js +++ b/modules/actions/add_member.js @@ -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); diff --git a/test/spec/actions/add_member.js b/test/spec/actions/add_member.js index 5b70bd54b..02564cee8 100644 --- a/test/spec/actions/add_member.js +++ b/test/spec/actions/add_member.js @@ -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' }