add inventory lookup to workflow detail view

This commit is contained in:
Jake McDermott 2018-11-07 22:17:15 -05:00
parent 3c980d373c
commit 2d2164a4ba
No known key found for this signature in database
GPG Key ID: 9A6F084352C3A0B7
4 changed files with 75 additions and 4 deletions

View File

@ -303,6 +303,23 @@ angular.module('templates', [surveyMaker.name, jobTemplates.name, labels.name, p
},
resolve: {
add: {
Inventory: ['$stateParams', 'Rest', 'GetBasePath', 'ProcessErrors',
function($stateParams, Rest, GetBasePath, ProcessErrors){
if($stateParams.inventory_id){
let path = `${GetBasePath('inventory')}${$stateParams.inventory_id}`;
Rest.setUrl(path);
return Rest.get().
then(function(data){
return data.data;
}).catch(function(response) {
ProcessErrors(null, response.data, response.status, null, {
hdr: 'Error!',
msg: 'Failed to get inventory info. GET returned status: ' +
response.status
});
});
}
}],
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
return TemplatesService.getAllLabelOptions()
@ -354,6 +371,23 @@ angular.module('templates', [surveyMaker.name, jobTemplates.name, labels.name, p
},
resolve: {
edit: {
Inventory: ['$stateParams', 'Rest', 'GetBasePath', 'ProcessErrors',
function($stateParams, Rest, GetBasePath, ProcessErrors){
if($stateParams.inventory_id){
let path = `${GetBasePath('inventory')}${$stateParams.inventory_id}`;
Rest.setUrl(path);
return Rest.get().
then(function(data){
return data.data;
}).catch(function(response) {
ProcessErrors(null, response.data, response.status, null, {
hdr: 'Error!',
msg: 'Failed to get inventory info. GET returned status: ' +
response.status
});
});
}
}],
availableLabels: ['Rest', '$stateParams', 'GetBasePath', 'ProcessErrors', 'TemplatesService',
function(Rest, $stateParams, GetBasePath, ProcessErrors, TemplatesService) {
return TemplatesService.getAllLabelOptions()

View File

@ -68,6 +68,21 @@ export default ['NotificationsList', 'i18n', function(NotificationsList, i18n) {
ngDisabled: '!(workflow_job_template_obj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate) || !canEditOrg',
awLookupWhen: '(workflow_job_template_obj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate) && canEditOrg'
},
inventory: {
label: i18n._('Inventory'),
type: 'lookup',
basePath: 'inventory',
list: 'InventoryList',
sourceModel: 'inventory',
sourceField: 'name',
autopopulateLookup: false,
column: 1,
awPopOver: "<p>" + i18n._("Select an inventory for the workflow. This inventory is applied to all job templates nodes that prompt for an inventory.") + "</p>",
dataTitle: i18n._('Inventory'),
dataPlacement: 'right',
dataContainer: "body",
ngDisabled: '!(workflow_job_template_obj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate) || !canEditInventory',
},
labels: {
label: i18n._('Labels'),
type: 'select',

View File

@ -8,11 +8,11 @@ export default [
'$scope', 'WorkflowForm', 'GenerateForm', 'Alert', 'ProcessErrors',
'Wait', '$state', 'CreateSelect2', 'TemplatesService',
'ToJSON', 'ParseTypeChange', '$q', 'Rest', 'GetBasePath', 'availableLabels', 'i18n',
'resolvedModels',
'resolvedModels', 'Inventory',
function($scope, WorkflowForm, GenerateForm, Alert, ProcessErrors,
Wait, $state, CreateSelect2, TemplatesService, ToJSON,
ParseTypeChange, $q, Rest, GetBasePath, availableLabels, i18n,
resolvedModels) {
resolvedModels, Inventory) {
// Inject dynamic view
let form = WorkflowForm(),
@ -23,6 +23,7 @@ export default [
$scope.canAddWorkflowJobTemplate = workflowTemplate.options('actions.POST');
$scope.canEditOrg = true;
$scope.canEditInventory = true;
$scope.parseType = 'yaml';
$scope.can_edit = true;
// apply form definition's default field values
@ -50,6 +51,12 @@ export default [
$scope.workflowEditorTooltip = i18n._("Please save before defining the workflow graph.");
$scope.surveyTooltip = i18n._('Please save before adding a survey to this workflow.');
if (Inventory){
$scope.inventory = Inventory.id;
$scope.inventory_name = Inventory.name;
}
$scope.formSave = function () {
let fld, data = {};

View File

@ -10,12 +10,12 @@ export default [
'Wait', 'Empty', 'ToJSON', 'initSurvey', '$state', 'CreateSelect2',
'ParseVariableString', 'TemplatesService', 'Rest', 'ToggleNotification',
'OrgAdminLookup', 'availableLabels', 'selectedLabels', 'workflowJobTemplateData', 'i18n',
'workflowLaunch', '$transitions', 'WorkflowJobTemplateModel',
'workflowLaunch', '$transitions', 'WorkflowJobTemplateModel', 'Inventory',
function($scope, $stateParams, WorkflowForm, GenerateForm, Alert,
ProcessErrors, GetBasePath, $q, ParseTypeChange, Wait, Empty,
ToJSON, SurveyControllerInit, $state, CreateSelect2, ParseVariableString,
TemplatesService, Rest, ToggleNotification, OrgAdminLookup, availableLabels, selectedLabels, workflowJobTemplateData, i18n,
workflowLaunch, $transitions, WorkflowJobTemplate
workflowLaunch, $transitions, WorkflowJobTemplate, Inventory,
) {
$scope.missingTemplates = _.has(workflowLaunch, 'node_templates_missing') && workflowLaunch.node_templates_missing.length > 0 ? true : false;
@ -54,6 +54,11 @@ export default [
$scope.parseType = 'yaml';
$scope.includeWorkflowMaker = false;
if (Inventory){
$scope.inventory = Inventory.id;
$scope.inventory_name = Inventory.name;
}
$scope.openWorkflowMaker = function() {
$state.go('.workflowMaker');
};
@ -312,6 +317,16 @@ export default [
$scope.canEditOrg = true;
}
if(workflowJobTemplateData.inventory) {
OrgAdminLookup.checkForRoleLevelAdminAccess(workflowJobTemplateData.inventory, 'workflow_admin_role')
.then(function(canEditInventory){
$scope.canEditInventory = canEditInventory;
});
}
else {
$scope.canEditInventory = true;
}
$scope.url = workflowJobTemplateData.url;
$scope.survey_enabled = workflowJobTemplateData.survey_enabled;