mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-14 01:33:03 +00:00
33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
import { osmJoinWays } from '../osm/index';
|
|
|
|
|
|
export function actionAddMember(relationId, member, memberIndex) {
|
|
return function(graph) {
|
|
var relation = graph.entity(relationId);
|
|
|
|
if (isNaN(memberIndex) && member.type === 'way') {
|
|
var members = relation.indexedMembers();
|
|
members.push(member);
|
|
|
|
var joined = osmJoinWays(members, graph);
|
|
for (var i = 0; i < joined.length; i++) {
|
|
var segment = joined[i];
|
|
for (var j = 0; j < segment.length && segment.length >= 2; j++) {
|
|
if (segment[j] !== member)
|
|
continue;
|
|
|
|
if (j === 0) {
|
|
memberIndex = segment[j + 1].index;
|
|
} else if (j === segment.length - 1) {
|
|
memberIndex = segment[j - 1].index + 1;
|
|
} else {
|
|
memberIndex = Math.min(segment[j - 1].index + 1, segment[j + 1].index + 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return graph.replace(relation.addMember(member, memberIndex));
|
|
};
|
|
}
|