Added initial implementation of quick fix for connecting crossing features (still has some bugs)

This commit is contained in:
Quincy Morgan
2018-12-21 17:39:20 -05:00
parent 90bc7bf6a5
commit 70d5529a58
4 changed files with 43 additions and 0 deletions
+3
View File
@@ -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
+4
View File
@@ -1126,6 +1126,10 @@
},
"ignore_temporarily": {
"title": "Ignore for now"
},
"add_connection_vertex": {
"title": "Connect the features",
"undo_redo": "Connected crossing features."
}
}
},
+35
View File
@@ -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')
);
}
})
]
}));
}
}
+1
View File
@@ -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) {