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,30 +63,52 @@ 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);
// Auto populate the field if there is only one result var sourceModel = form.fields[field].sourceModel,
Rest.setUrl(defaultUrl); sourceField = form.fields[field].sourceField;
Rest.get()
.success(function (data) { // this logic makes sure that the form is being added, and that the lookup to be autopopulated is required
if (data.count === 1) { function fieldIsAutopopulatable() {
parent_scope[field] = data.results[0].id; if (parent_scope.mode === "add") {
if (parent_scope[form.name + '_form'] && form.fields[field] && form.fields[field].sourceModel) { if (parent_scope[sourceModel + "_field"].awRequiredWhen &&
parent_scope[form.fields[field].sourceModel + '_' + form.fields[field].sourceField] = parent_scope[sourceModel + "_field"].awRequiredWhen.variable &&
data.results[0][form.fields[field].sourceField]; parent_scope[parent_scope[sourceModel + "_field"].awRequiredWhen.variable]) {
if (parent_scope[form.name + '_form'][form.fields[field].sourceModel + '_' + form.fields[field].sourceField]) { return true;
parent_scope[form.name + '_form'][form.fields[field].sourceModel + '_' + form.fields[field].sourceField] } else if (parent_scope[sourceModel + "_field"].addRequired === true) {
.$setValidity('awlookup', true); return true;
} else {
return false;
}
} else {
return false;
}
}
if (fieldIsAutopopulatable()) {
// Auto populate the field if there is only one result
Rest.setUrl(defaultUrl);
Rest.get()
.success(function (data) {
if (data.count === 1) {
parent_scope[field] = data.results[0].id;
if (parent_scope[form.name + '_form'] && form.fields[field] && sourceModel) {
parent_scope[sourceModel + '_' + sourceField] =
data.results[0][sourceField];
if (parent_scope[form.name + '_form'][sourceModel + '_' + sourceField]) {
parent_scope[form.name + '_form'][sourceModel + '_' + sourceField]
.$setValidity('awlookup', true);
}
}
if (parent_scope[form.name + '_form']) {
parent_scope[form.name + '_form'].$setDirty();
} }
} }
if (parent_scope[form.name + '_form']) { })
parent_scope[form.name + '_form'].$setDirty(); .error(function (data, status) {
} ProcessErrors(parent_scope, data, status, form, { hdr: 'Error!',
} msg: 'Failed to launch adhoc command. POST returned status: ' +
}) status });
.error(function (data, status) { });
ProcessErrors(parent_scope, data, status, form, { hdr: 'Error!', }
msg: 'Failed to launch adhoc command. POST returned status: ' +
status });
});
parent_scope['lookUp' + name] = function () { parent_scope['lookUp' + name] = function () {