Playbook select list finally works on edit. Woot\!

This commit is contained in:
chouseknecht
2013-05-17 16:14:33 -04:00
parent 94ff36b62f
commit 4abe92a7a6
15 changed files with 69 additions and 60 deletions

View File

@@ -341,59 +341,61 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route
var id = $routeParams.id;
var relatedSets = {};
function getPlaybooks() {
var url = GetBasePath('projects') + scope.project + '/playbooks/';
Rest.setUrl(url);
Rest.get()
.success( function(data, status, headers, config) {
var opts = [];
for (var i=0; i < data.length; i++) {
opts.push({ label: data[i], value: data[i] });
}
scope.playbook_options = opts;
})
.error( function(data, status, headers, config) {
ProcessErrors(scope, data, status, form,
{ hdr: 'Error!', msg: 'Failed to get playbook list for ' + url +'. GET returned status: ' + status });
});
function getPlaybooks(project) {
if (project !== null && project !== '' && project !== undefined) {
var url = GetBasePath('projects') + project + '/playbooks/';
Rest.setUrl(url);
Rest.get()
.success( function(data, status, headers, config) {
scope.playbook_options = [];
for (var i=0; i < data.length; i++) {
scope.playbook_options.push(data[i]);
}
})
.error( function(data, status, headers, config) {
ProcessErrors(scope, data, status, form,
{ hdr: 'Error!', msg: 'Failed to get playbook list for ' + url +'. GET returned status: ' + status });
});
}
}
// Update playbook select whenever project value changes
var selectPlaybook = function(oldValue, newValue) {
if (oldValue != newValue && scope.project) {
getPlaybooks();
}
};
// Register a watcher on project_name
// Register a watcher on project_name. Refresh the playbook list on change.
if (scope.selectPlaybookUnregister) {
scope.selectPlaybookUnregister();
}
scope.selectPlaybookUnregister = scope.$watch('project_name', selectPlaybook);
scope.selectPlaybookUnregister = scope.$watch('project_name', function(oldValue, newValue) {
if (oldValue !== newValue && newValue !== '' && newValue !== null && newValue !== undefined) {
scope.playbook = null;
getPlaybooks(scope.project);
}
});
// Retrieve each related set
// Retrieve each related set and populate the playbook list
if (scope.jobTemplateLoadedRemove) {
scope.jobTemplateLoadedRemove();
}
scope.jobTemplateLoadedRemove = scope.$on('jobTemplateLoaded', function() {
for (var set in relatedSets) {
scope.search(relatedSets[set].iterator);
}
getPlaybooks();
}
getPlaybooks(scope.project);
});
// Our job type options
scope.job_type_options = [{ value: 'run', label: 'Run' }, { value: 'check', label: 'Check' }];
scope.playbook_options = null;
scope.playbook = null;
// Retrieve detail record and prepopulate the form
Rest.setUrl(defaultUrl + ':id/');
Rest.get({ params: {id: id} })
.success( function(data, status, headers, config) {
LoadBreadCrumbs({ path: '/job_templates/' + id, title: data.name });
for (var fld in form.fields) {
if (data[fld] !== null && data[fld] !== undefined) {
if (data[fld] !== null && data[fld] !== undefined) {
if (form.fields[fld].type == 'select') {
if (scope[fld + '_options']) {
if (scope[fld + '_options'] && scope[fld + '_options'].length > 0) {
for (var i=0; i < scope[fld + '_options'].length; i++) {
if (data[fld] == scope[fld + '_options'][i].value) {
scope[fld] = scope[fld + '_options'][i];
@@ -401,7 +403,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route
}
}
else {
scope[fld] = { label: data[fld], value: data[fld] };
scope[fld] = data[fld];
}
}
else {
@@ -416,7 +418,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField];
}
}
scope.url = data.url;
var related = data.related;
for (var set in form.related) {
if (related[set]) {
@@ -463,7 +465,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route
Rest.setUrl(defaultUrl + $routeParams.id);
var data = {}
for (var fld in form.fields) {
if (form.fields[fld].type == 'select') {
if (form.fields[fld].type == 'select' && fld != 'playbook') {
data[fld] = scope[fld].value;
}
else {