Handle tooltip disabled reasons

This commit is contained in:
Bryan Housel
2018-04-25 23:32:57 -04:00
parent 6ed20d7762
commit 9f623836cd
4 changed files with 34 additions and 19 deletions

View File

@@ -132,7 +132,8 @@ en:
annotation: "Merged {n} features."
not_eligible: These features can't be merged.
not_adjacent: These features can't be merged because their endpoints aren't connected.
restriction: "These features can't be merged because at least one is a member of a \"{relation}\" relation."
restriction: "These features can't be merged because it would damage a \"{relation}\" relation."
relation: These features can't be merged because they have conflicting relation roles.
incomplete_relation: These features can't be merged because at least one hasn't been fully downloaded.
conflicting_tags: These features can't be merged because some of their tags have conflicting values.
move:

View File

@@ -170,7 +170,8 @@
"annotation": "Merged {n} features.",
"not_eligible": "These features can't be merged.",
"not_adjacent": "These features can't be merged because their endpoints aren't connected.",
"restriction": "These features can't be merged because at least one is a member of a \"{relation}\" relation.",
"restriction": "These features can't be merged because it would damage a \"{relation}\" relation.",
"relation": "These features can't be merged because they have conflicting relation roles.",
"incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded.",
"conflicting_tags": "These features can't be merged because some of their tags have conflicting values."
},

View File

@@ -30,6 +30,7 @@ export function actionMergeNodes(nodeIDs) {
var action = function(graph) {
if (nodeIDs.length < 2) return graph;
var toLoc = chooseLoc(graph);
for (var i = 0; i < nodeIDs.length; i++) {
@@ -41,7 +42,14 @@ export function actionMergeNodes(nodeIDs) {
};
action.disabled = function (graph) {
action.disabled = function(graph) {
if (nodeIDs.length < 2) return 'not_eligible';
for (var i = 0; i < nodeIDs.length; i++) {
var entity = graph.entity(nodeIDs[i]);
if (entity.type !== 'node') return 'not_eligible';
}
return actionConnect(nodeIDs).disabled(graph);
};

View File

@@ -78,25 +78,30 @@ export function operationMerge(selectedIDs, context) {
operation.tooltip = function() {
var j = join.disabled(context.graph());
var m = merge.disabled(context.graph());
var p = mergePolygon.disabled(context.graph());
var n = mergeNodes.disabled(context.graph());
if (j === 'restriction' && m && p && n) {
return t('operations.merge.restriction',
{ relation: context.presets().item('type/restriction').name() });
}
if (p === 'incomplete_relation' && j && m && n) {
return t('operations.merge.incomplete_relation');
}
var j = join.disabled(context.graph()); // 'not_eligible', 'not_adjacent', 'restriction', 'conflicting_tags'
var m = merge.disabled(context.graph()); // 'not_eligible'
var p = mergePolygon.disabled(context.graph()); // 'not_eligible', 'incomplete_relation'
var n = mergeNodes.disabled(context.graph()); // 'not_eligible', 'relation', 'restriction'
// disabled for one of various reasons
if (j && m && p && n) {
return t('operations.merge.' + j);
}
if (j === 'restriction' || n === 'restriction') {
return t('operations.merge.restriction',
{ relation: context.presets().item('type/restriction').name() });
return t('operations.merge.description');
} else if (p === 'incomplete_relation') {
return t('operations.merge.incomplete_relation');
} else if (n === 'relation') {
return t('operations.merge.relation');
} else {
return t('operations.merge.' + j);
}
} else {
return t('operations.merge.description');
}
};