mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-24 09:04:02 +02:00
Added initial implementation of quick fix for connecting crossing features (still has some bugs)
This commit is contained in:
@@ -937,6 +937,9 @@ en:
|
||||
title: Select a feature type
|
||||
ignore_temporarily:
|
||||
title: Ignore for now
|
||||
add_connection_vertex:
|
||||
title: Connect the features
|
||||
undo_redo: Connected crossing features.
|
||||
intro:
|
||||
done: done
|
||||
ok: OK
|
||||
|
||||
Vendored
+4
@@ -1126,6 +1126,10 @@
|
||||
},
|
||||
"ignore_temporarily": {
|
||||
"title": "Ignore for now"
|
||||
},
|
||||
"add_connection_vertex": {
|
||||
"title": "Connect the features",
|
||||
"undo_redo": "Connected crossing features."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -8,7 +8,11 @@ import {
|
||||
ValidationIssueType,
|
||||
ValidationIssueSeverity,
|
||||
validationIssue,
|
||||
validationIssueFix
|
||||
} from './validation_issue';
|
||||
import { osmNode } from '../osm';
|
||||
import { actionAddMidpoint } from '../actions';
|
||||
import { geoChooseEdge } from '../geo';
|
||||
|
||||
|
||||
export function validationHighwayCrossingOtherWays(context) {
|
||||
@@ -220,7 +224,38 @@ export function validationHighwayCrossingOtherWays(context) {
|
||||
message: t('issues.'+crossingTypeID+'.message', messageDict),
|
||||
tooltip: t('issues.'+crossingTypeID+'.tooltip'),
|
||||
entities: entities,
|
||||
info: {'ways': crossing.ways},
|
||||
coordinates: crossing.cross_point,
|
||||
fixes: [
|
||||
new validationIssueFix({
|
||||
title: t('issues.fix.add_connection_vertex.title'),
|
||||
action: function() {
|
||||
var loc = this.issue.coordinates;
|
||||
var ways = this.issue.info.ways;
|
||||
|
||||
context.perform(
|
||||
function actionConnectCrossingWays(graph) {
|
||||
|
||||
var node = osmNode();
|
||||
graph = graph.replace(node);
|
||||
|
||||
var way0 = ways[0];
|
||||
var choice0 = geoChooseEdge(context.childNodes(way0), loc, context.projection);
|
||||
var edge0 = [way0.nodes[choice0.index - 1], way0.nodes[choice0.index]];
|
||||
graph = actionAddMidpoint({loc: choice0.loc, edge: edge0}, node)(graph);
|
||||
|
||||
var way1 = ways[1];
|
||||
var choice1 = geoChooseEdge(context.childNodes(way1), loc, context.projection);
|
||||
var edge1 = [way1.nodes[choice1.index - 1], way1.nodes[choice1.index]];
|
||||
graph = actionAddMidpoint({loc: choice1.loc, edge: edge1}, node)(graph);
|
||||
|
||||
return graph;
|
||||
},
|
||||
t('issues.fix.add_connection_vertex.undo_redo')
|
||||
);
|
||||
}
|
||||
})
|
||||
]
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ export function validationIssue(attrs) {
|
||||
this.tooltip = attrs.tooltip;
|
||||
this.entities = attrs.entities; // expect an array of entities
|
||||
this.coordinates = attrs.coordinates; // expect a [lon, lat] array
|
||||
this.info = attrs.info; // an object containing arbitrary extra information
|
||||
this.fixes = attrs.fixes; // expect an array of functions for possible fixes
|
||||
|
||||
if (this.fixes) {
|
||||
|
||||
Reference in New Issue
Block a user