in modules/ui/field.js [311:352]
field.isAllowed = function() {
if (entityIDs &&
entityIDs.length > 1 &&
uiFields[field.type].supportsMultiselection === false) return false;
if (field.geometry && !entityIDs.every(function(entityID) {
return field.matchGeometry(context.graph().geometry(entityID));
})) return false;
if (entityIDs && _entityExtent && field.locationSetID) { // is field allowed in this location?
var validLocations = locationManager.locationsAt(_entityExtent.center());
if (!validLocations[field.locationSetID]) return false;
}
var prerequisiteTag = field.prerequisiteTag;
if (entityIDs &&
!tagsContainFieldKey() && // ignore tagging prerequisites if a value is already present
prerequisiteTag) {
if (!entityIDs.every(function(entityID) {
var entity = context.graph().entity(entityID);
if (prerequisiteTag.key) {
var value = entity.tags[prerequisiteTag.key];
if (!value) return false;
if (prerequisiteTag.valueNot) {
return prerequisiteTag.valueNot !== value;
}
if (prerequisiteTag.value) {
return prerequisiteTag.value === value;
}
} else if (prerequisiteTag.keyNot) {
if (entity.tags[prerequisiteTag.keyNot]) return false;
}
return true;
})) return false;
}
return true;
};