Merge pull request #190 from ansible/jlm_54_lookup_autopopulate_fixes

Jlm 54 lookup autopopulate fixes
This commit is contained in:
jlmitch5
2015-05-06 14:43:38 -04:00

View File

@@ -63,17 +63,38 @@ export default
$('input[name="' + form.fields[field].sourceModel + '_' + form.fields[field].sourceField + '"]').attr('data-url', watchUrl); $('input[name="' + form.fields[field].sourceModel + '_' + form.fields[field].sourceField + '"]').attr('data-url', watchUrl);
$('input[name="' + form.fields[field].sourceModel + '_' + form.fields[field].sourceField + '"]').attr('data-source', field); $('input[name="' + form.fields[field].sourceModel + '_' + form.fields[field].sourceField + '"]').attr('data-source', field);
var sourceModel = form.fields[field].sourceModel,
sourceField = form.fields[field].sourceField;
// this logic makes sure that the form is being added, and that the lookup to be autopopulated is required
function fieldIsAutopopulatable() {
if (parent_scope.mode === "add") {
if (parent_scope[sourceModel + "_field"].awRequiredWhen &&
parent_scope[sourceModel + "_field"].awRequiredWhen.variable &&
parent_scope[parent_scope[sourceModel + "_field"].awRequiredWhen.variable]) {
return true;
} else if (parent_scope[sourceModel + "_field"].addRequired === true) {
return true;
} else {
return false;
}
} else {
return false;
}
}
if (fieldIsAutopopulatable()) {
// Auto populate the field if there is only one result // Auto populate the field if there is only one result
Rest.setUrl(defaultUrl); Rest.setUrl(defaultUrl);
Rest.get() Rest.get()
.success(function (data) { .success(function (data) {
if (data.count === 1) { if (data.count === 1) {
parent_scope[field] = data.results[0].id; parent_scope[field] = data.results[0].id;
if (parent_scope[form.name + '_form'] && form.fields[field] && form.fields[field].sourceModel) { if (parent_scope[form.name + '_form'] && form.fields[field] && sourceModel) {
parent_scope[form.fields[field].sourceModel + '_' + form.fields[field].sourceField] = parent_scope[sourceModel + '_' + sourceField] =
data.results[0][form.fields[field].sourceField]; data.results[0][sourceField];
if (parent_scope[form.name + '_form'][form.fields[field].sourceModel + '_' + form.fields[field].sourceField]) { if (parent_scope[form.name + '_form'][sourceModel + '_' + sourceField]) {
parent_scope[form.name + '_form'][form.fields[field].sourceModel + '_' + form.fields[field].sourceField] parent_scope[form.name + '_form'][sourceModel + '_' + sourceField]
.$setValidity('awlookup', true); .$setValidity('awlookup', true);
} }
} }
@@ -87,6 +108,7 @@ export default
msg: 'Failed to launch adhoc command. POST returned status: ' + msg: 'Failed to launch adhoc command. POST returned status: ' +
status }); status });
}); });
}
parent_scope['lookUp' + name] = function () { parent_scope['lookUp' + name] = function () {