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
+9 -1
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);
};
+21 -16
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');
}
};