From bcf768e7fc6270b6a929dd965ebe3961c6ea217e Mon Sep 17 00:00:00 2001 From: Michael Abashian Date: Mon, 14 Nov 2016 15:19:42 -0500 Subject: [PATCH] Included the workflow graph directive on the workflow details view. Re-organized the job templates directory. It's now just "templates" --- awx/ui/client/src/app.js | 8 +- .../edit/inventory-edit.controller.js | 6 +- awx/ui/client/src/lists.js | 4 +- .../lists/{JobTemplates.js => Templates.js} | 4 +- .../linkout/organizations-linkout.route.js | 6 +- .../job-template-add.controller.js | 0 .../job_templates}/add-job-template/main.js | 0 .../job-templates-copy.controller.js | 0 .../job-templates-copy.route.js | 0 .../job-templates-copy.service.js | 0 .../job_templates/copy-job-template}/main.js | 2 +- .../job-template-edit.controller.js | 0 .../job_templates}/edit-job-template/main.js | 0 .../labels/labelsList.block.less | 0 .../labels/labelsList.directive.js | 0 .../labels/labelsList.partial.html | 0 .../labels/main.js | 0 .../{job-templates => templates}/list/main.js | 6 +- .../list/templates-list.controller.js} | 14 +- .../list/templates-list.route.js} | 8 +- .../src/{job-templates => templates}/main.js | 35 ++--- .../survey-maker/main.js | 2 +- .../survey-maker/questions/edit.factory.js | 0 .../survey-maker/questions/main.js | 0 .../questions/question-scope.factory.js | 0 .../survey-maker/render/main.js | 0 .../render/multiple-choice.directive.js | 0 .../render/multiple-choice.partial.html | 0 .../render/multiselect.directive.js | 0 .../render/survey-question.directive.js | 0 .../render/survey-question.partial.html | 0 .../survey-maker/shared/main.js | 0 .../shared/question-definition.form.js | 0 .../shared/survey-controls.block.less | 0 .../survey-maker/survey-maker.block.less | 0 .../survey-maker/surveys/add.factory.js | 0 .../survey-maker/surveys/delete.factory.js | 0 .../survey-maker/surveys/edit.factory.js | 0 .../survey-maker/surveys/init.factory.js | 0 .../survey-maker/surveys/main.js | 0 .../survey-maker/surveys/show.factory.js | 0 .../templates.service.js} | 0 .../workflows}/add-workflow/main.js | 0 .../add-workflow/workflow-add.controller.js | 8 +- .../add-workflow/workflow-add.partial.html | 0 .../workflows}/edit-workflow/main.js | 0 .../edit-workflow/workflow-edit.controller.js | 22 +-- .../edit-workflow/workflow-edit.partial.html | 0 .../workflows}/workflow-chart/main.js | 2 +- .../workflow-chart/workflow-chart.block.less | 0 .../workflow-chart.directive.js | 0 .../workflows}/workflow-maker/main.js | 4 +- .../workflow-maker/workflow-maker.block.less | 0 .../workflow-maker.controller.js | 18 +-- .../workflow-maker.directive.js | 10 +- .../workflow-maker.partial.html | 0 .../workflows/workflow.service.js} | 7 +- .../workflow-results.controller.js | 130 ++++++++++++++++++ .../workflow-results.partial.html | 2 +- .../templates-list.controller-test.js} | 26 ++-- .../workflows/workflow-add.controller-test.js | 20 +-- .../workflow-maker.controller-test.js | 7 +- 62 files changed, 242 insertions(+), 109 deletions(-) rename awx/ui/client/src/lists/{JobTemplates.js => Templates.js} (97%) rename awx/ui/client/src/{job-templates => templates/job_templates}/add-job-template/job-template-add.controller.js (100%) rename awx/ui/client/src/{job-templates => templates/job_templates}/add-job-template/main.js (100%) rename awx/ui/client/src/{job-templates/copy => templates/job_templates/copy-job-template}/job-templates-copy.controller.js (100%) rename awx/ui/client/src/{job-templates/copy => templates/job_templates/copy-job-template}/job-templates-copy.route.js (100%) rename awx/ui/client/src/{job-templates/copy => templates/job_templates/copy-job-template}/job-templates-copy.service.js (100%) rename awx/ui/client/src/{job-templates/copy => templates/job_templates/copy-job-template}/main.js (92%) rename awx/ui/client/src/{job-templates => templates/job_templates}/edit-job-template/job-template-edit.controller.js (100%) rename awx/ui/client/src/{job-templates => templates/job_templates}/edit-job-template/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/labels/labelsList.block.less (100%) rename awx/ui/client/src/{job-templates => templates}/labels/labelsList.directive.js (100%) rename awx/ui/client/src/{job-templates => templates}/labels/labelsList.partial.html (100%) rename awx/ui/client/src/{job-templates => templates}/labels/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/list/main.js (52%) rename awx/ui/client/src/{job-templates/list/job-templates-list.controller.js => templates/list/templates-list.controller.js} (94%) rename awx/ui/client/src/{job-templates/list/job-templates-list.route.js => templates/list/templates-list.route.js} (82%) rename awx/ui/client/src/{job-templates => templates}/main.js (95%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/main.js (90%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/questions/edit.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/questions/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/questions/question-scope.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/multiple-choice.directive.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/multiple-choice.partial.html (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/multiselect.directive.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/survey-question.directive.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/render/survey-question.partial.html (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/shared/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/shared/question-definition.form.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/shared/survey-controls.block.less (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/survey-maker.block.less (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/add.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/delete.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/edit.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/init.factory.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/main.js (100%) rename awx/ui/client/src/{job-templates => templates}/survey-maker/surveys/show.factory.js (100%) rename awx/ui/client/src/{job-templates/job-template.service.js => templates/templates.service.js} (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/add-workflow/main.js (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/add-workflow/workflow-add.controller.js (96%) rename awx/ui/client/src/{job-templates => templates/workflows}/add-workflow/workflow-add.partial.html (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/edit-workflow/main.js (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/edit-workflow/workflow-edit.controller.js (97%) rename awx/ui/client/src/{job-templates => templates/workflows}/edit-workflow/workflow-edit.partial.html (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-chart/main.js (85%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-chart/workflow-chart.block.less (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-chart/workflow-chart.directive.js (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-maker/main.js (74%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-maker/workflow-maker.block.less (100%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-maker/workflow-maker.controller.js (97%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-maker/workflow-maker.directive.js (86%) rename awx/ui/client/src/{job-templates => templates/workflows}/workflow-maker/workflow-maker.partial.html (100%) rename awx/ui/client/src/{job-templates/workflow-maker/workflow-help.service.js => templates/workflows/workflow.service.js} (94%) rename awx/ui/tests/spec/{job-templates/job-templates-list.controller-test.js => templates/templates-list.controller-test.js} (87%) diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 3174bc6b98..52c09ded9e 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -67,7 +67,7 @@ import moment from './shared/moment/main'; import login from './login/main'; import activityStream from './activity-stream/main'; import standardOut from './standard-out/main'; -import JobTemplates from './job-templates/main'; +import Templates from './templates/main'; import credentials from './credentials/main'; import { ProjectsList, ProjectsAdd, ProjectsEdit } from './controllers/Projects'; import { UsersList, UsersAdd, UsersEdit } from './controllers/Users'; @@ -126,7 +126,7 @@ var tower = angular.module('Tower', [ jobSubmission.name, notifications.name, standardOut.name, - JobTemplates.name, + Templates.name, portalMode.name, config.name, credentials.name, @@ -135,7 +135,7 @@ var tower = angular.module('Tower', [ 'OrganizationFormDefinition', 'UserFormDefinition', 'OrganizationListDefinition', - 'jobTemplates', + 'templates', 'UserListDefinition', 'UserHelper', 'PromptDialog', @@ -158,7 +158,7 @@ var tower = angular.module('Tower', [ 'TeamHelper', 'CredentialsListDefinition', 'CredentialFormDefinition', - 'JobTemplatesListDefinition', + 'TemplatesListDefinition', 'PortalJobTemplatesListDefinition', 'JobTemplateFormDefinition', 'JobTemplatesHelper', diff --git a/awx/ui/client/src/inventories/edit/inventory-edit.controller.js b/awx/ui/client/src/inventories/edit/inventory-edit.controller.js index 697bfdd949..ba6de0f183 100644 --- a/awx/ui/client/src/inventories/edit/inventory-edit.controller.js +++ b/awx/ui/client/src/inventories/edit/inventory-edit.controller.js @@ -14,7 +14,7 @@ function InventoriesEdit($scope, $rootScope, $compile, $location, $log, $stateParams, InventoryForm, Rest, Alert, ProcessErrors, ClearScope, GetBasePath, ParseTypeChange, Wait, ToJSON, ParseVariableString, Prompt, InitiatePlaybookRun, - JobTemplateService, $state, $filter) { + TemplatesService, $state, $filter) { // Inject dynamic view var defaultUrl = GetBasePath('inventory'), @@ -146,7 +146,7 @@ function InventoriesEdit($scope, $rootScope, $compile, $location, action = function () { $('#prompt-modal').modal('hide'); Wait('start'); - JobTemplateService.deleteJobTemplate(id) + TemplatesService.deleteJobTemplate(id) .success(function () { $('#prompt-modal').modal('hide'); // @issue: OLD SEARCH @@ -174,5 +174,5 @@ export default ['$scope', '$rootScope', '$compile', '$location', '$log', '$stateParams', 'InventoryForm', 'Rest', 'Alert', 'ProcessErrors', 'ClearScope', 'GetBasePath', 'ParseTypeChange', 'Wait', 'ToJSON', 'ParseVariableString', 'Prompt', 'InitiatePlaybookRun', - 'JobTemplateService', '$state', '$filter', InventoriesEdit, + 'TemplatesService', '$state', '$filter', InventoriesEdit, ]; diff --git a/awx/ui/client/src/lists.js b/awx/ui/client/src/lists.js index f7b0288822..3a02e6a127 100644 --- a/awx/ui/client/src/lists.js +++ b/awx/ui/client/src/lists.js @@ -16,7 +16,6 @@ import InventoryHosts from "./lists/InventoryHosts"; import InventorySources from "./lists/InventorySources"; import JobEvents from "./lists/JobEvents"; import JobHosts from "./lists/JobHosts"; -import JobTemplates from "./lists/JobTemplates"; import Jobs from "./lists/Jobs"; import Organizations from "./lists/Organizations"; import PortalJobTemplates from "./lists/PortalJobTemplates"; @@ -27,6 +26,7 @@ import ScheduledJobs from "./lists/ScheduledJobs"; import Schedules from "./lists/Schedules"; import Streams from "./lists/Streams"; import Teams from "./lists/Teams"; +import Templates from "./lists/Templates"; import Users from "./lists/Users"; export @@ -42,7 +42,6 @@ export InventorySources, JobEvents, JobHosts, - JobTemplates, Jobs, Organizations, PortalJobTemplates, @@ -53,5 +52,6 @@ export Schedules, Streams, Teams, + Templates, Users }; diff --git a/awx/ui/client/src/lists/JobTemplates.js b/awx/ui/client/src/lists/Templates.js similarity index 97% rename from awx/ui/client/src/lists/JobTemplates.js rename to awx/ui/client/src/lists/Templates.js index 0713402775..7979c46f8e 100644 --- a/awx/ui/client/src/lists/JobTemplates.js +++ b/awx/ui/client/src/lists/Templates.js @@ -6,8 +6,8 @@ export default - angular.module('JobTemplatesListDefinition', []) - .factory('JobTemplateList', ['i18n', function(i18n) { + angular.module('TemplatesListDefinition', []) + .factory('TemplateList', ['i18n', function(i18n) { return { name: 'templates', diff --git a/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js b/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js index c22b3c1049..3f65c144ab 100644 --- a/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js +++ b/awx/ui/client/src/organizations/linkout/organizations-linkout.route.js @@ -288,13 +288,15 @@ export default [{ features: ['FeaturesService', function(FeaturesService) { return FeaturesService.get(); }], - OrgJobTemplateList: ['JobTemplateList', 'GetBasePath', '$stateParams', function(JobTemplateList) { - let list = _.cloneDeep(JobTemplateList); + OrgJobTemplateList: ['TemplateList', 'GetBasePath', '$stateParams', function(TemplateList) { + let list = _.cloneDeep(TemplateList); delete list.actions; // @issue Why is the delete action unavailable in this view? delete list.fieldActions.delete; list.emptyListText = "This list is populated by job templates added from the Job Templates section"; list.searchSize = "col-lg-12 col-md-12 col-sm-12 col-xs-12"; + list.iterator = 'job_template'; + list.name = 'job_templates'; return list; }], OrgJobTemplateDataset: ['OrgJobTemplateList', 'QuerySet', '$stateParams', 'GetBasePath', diff --git a/awx/ui/client/src/job-templates/add-job-template/job-template-add.controller.js b/awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js similarity index 100% rename from awx/ui/client/src/job-templates/add-job-template/job-template-add.controller.js rename to awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js diff --git a/awx/ui/client/src/job-templates/add-job-template/main.js b/awx/ui/client/src/templates/job_templates/add-job-template/main.js similarity index 100% rename from awx/ui/client/src/job-templates/add-job-template/main.js rename to awx/ui/client/src/templates/job_templates/add-job-template/main.js diff --git a/awx/ui/client/src/job-templates/copy/job-templates-copy.controller.js b/awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.controller.js similarity index 100% rename from awx/ui/client/src/job-templates/copy/job-templates-copy.controller.js rename to awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.controller.js diff --git a/awx/ui/client/src/job-templates/copy/job-templates-copy.route.js b/awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.route.js similarity index 100% rename from awx/ui/client/src/job-templates/copy/job-templates-copy.route.js rename to awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.route.js diff --git a/awx/ui/client/src/job-templates/copy/job-templates-copy.service.js b/awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.service.js similarity index 100% rename from awx/ui/client/src/job-templates/copy/job-templates-copy.service.js rename to awx/ui/client/src/templates/job_templates/copy-job-template/job-templates-copy.service.js diff --git a/awx/ui/client/src/job-templates/copy/main.js b/awx/ui/client/src/templates/job_templates/copy-job-template/main.js similarity index 92% rename from awx/ui/client/src/job-templates/copy/main.js rename to awx/ui/client/src/templates/job_templates/copy-job-template/main.js index fbccc713e4..1c6cda958a 100644 --- a/awx/ui/client/src/job-templates/copy/main.js +++ b/awx/ui/client/src/templates/job_templates/copy-job-template/main.js @@ -9,7 +9,7 @@ import route from './job-templates-copy.route'; import service from './job-templates-copy.service'; export default - angular.module('jobTemplates.copy', []) + angular.module('templates.copy', []) .service('jobTemplateCopyService', service) .controller('jobTemplateCopyController', controller) .run(['$stateExtender', function($stateExtender) { diff --git a/awx/ui/client/src/job-templates/edit-job-template/job-template-edit.controller.js b/awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js similarity index 100% rename from awx/ui/client/src/job-templates/edit-job-template/job-template-edit.controller.js rename to awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js diff --git a/awx/ui/client/src/job-templates/edit-job-template/main.js b/awx/ui/client/src/templates/job_templates/edit-job-template/main.js similarity index 100% rename from awx/ui/client/src/job-templates/edit-job-template/main.js rename to awx/ui/client/src/templates/job_templates/edit-job-template/main.js diff --git a/awx/ui/client/src/job-templates/labels/labelsList.block.less b/awx/ui/client/src/templates/labels/labelsList.block.less similarity index 100% rename from awx/ui/client/src/job-templates/labels/labelsList.block.less rename to awx/ui/client/src/templates/labels/labelsList.block.less diff --git a/awx/ui/client/src/job-templates/labels/labelsList.directive.js b/awx/ui/client/src/templates/labels/labelsList.directive.js similarity index 100% rename from awx/ui/client/src/job-templates/labels/labelsList.directive.js rename to awx/ui/client/src/templates/labels/labelsList.directive.js diff --git a/awx/ui/client/src/job-templates/labels/labelsList.partial.html b/awx/ui/client/src/templates/labels/labelsList.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/labels/labelsList.partial.html rename to awx/ui/client/src/templates/labels/labelsList.partial.html diff --git a/awx/ui/client/src/job-templates/labels/main.js b/awx/ui/client/src/templates/labels/main.js similarity index 100% rename from awx/ui/client/src/job-templates/labels/main.js rename to awx/ui/client/src/templates/labels/main.js diff --git a/awx/ui/client/src/job-templates/list/main.js b/awx/ui/client/src/templates/list/main.js similarity index 52% rename from awx/ui/client/src/job-templates/list/main.js rename to awx/ui/client/src/templates/list/main.js index 95ef62cac5..d802c64814 100644 --- a/awx/ui/client/src/job-templates/list/main.js +++ b/awx/ui/client/src/templates/list/main.js @@ -4,8 +4,8 @@ * All Rights Reserved *************************************************/ -import controller from './job-templates-list.controller'; +import controller from './templates-list.controller'; export default - angular.module('jobTemplatesList', []) - .controller('JobTemplatesListController', controller); + angular.module('templatesList', []) + .controller('TemplatesListController', controller); diff --git a/awx/ui/client/src/job-templates/list/job-templates-list.controller.js b/awx/ui/client/src/templates/list/templates-list.controller.js similarity index 94% rename from awx/ui/client/src/job-templates/list/job-templates-list.controller.js rename to awx/ui/client/src/templates/list/templates-list.controller.js index ab807971de..7c81887c40 100644 --- a/awx/ui/client/src/job-templates/list/job-templates-list.controller.js +++ b/awx/ui/client/src/templates/list/templates-list.controller.js @@ -5,18 +5,18 @@ *************************************************/ export default ['$scope', '$rootScope', '$location', '$stateParams', 'Rest', 'Alert', - 'JobTemplateList', 'Prompt', 'ClearScope', 'ProcessErrors', 'GetBasePath', - 'InitiatePlaybookRun', 'Wait', '$state', '$filter', 'Dataset', 'rbacUiControlService', 'JobTemplateService', + 'TemplateList', 'Prompt', 'ClearScope', 'ProcessErrors', 'GetBasePath', + 'InitiatePlaybookRun', 'Wait', '$state', '$filter', 'Dataset', 'rbacUiControlService', 'TemplatesService', 'QuerySet', function( $scope, $rootScope, $location, $stateParams, Rest, Alert, - JobTemplateList, Prompt, ClearScope, ProcessErrors, GetBasePath, - InitiatePlaybookRun, Wait, $state, $filter, Dataset, rbacUiControlService, JobTemplateService, + TemplateList, Prompt, ClearScope, ProcessErrors, GetBasePath, + InitiatePlaybookRun, Wait, $state, $filter, Dataset, rbacUiControlService, TemplatesService, qs ) { ClearScope(); - var list = JobTemplateList; + var list = TemplateList; init(); @@ -95,7 +95,7 @@ export default ['$scope', '$rootScope', '$location', '$stateParams', 'Rest', 'Al $('#prompt-modal').modal('hide'); Wait('start'); if(template.type && (template.type === 'Workflow Job Template' || template.type === 'workflow_job_template')) { - JobTemplateService.deleteWorkflowJobTemplate(template.id) + TemplatesService.deleteWorkflowJobTemplate(template.id) .then(function () { handleSuccessfulDelete(); }, function (data) { @@ -105,7 +105,7 @@ export default ['$scope', '$rootScope', '$location', '$stateParams', 'Rest', 'Al }); } else if(template.type && (template.type === 'Job Template' || template.type === 'job_template')) { - JobTemplateService.deleteJobTemplate(template.id) + TemplatesService.deleteJobTemplate(template.id) .then(function () { handleSuccessfulDelete(); }, function (data) { diff --git a/awx/ui/client/src/job-templates/list/job-templates-list.route.js b/awx/ui/client/src/templates/list/templates-list.route.js similarity index 82% rename from awx/ui/client/src/job-templates/list/job-templates-list.route.js rename to awx/ui/client/src/templates/list/templates-list.route.js index 3e64e8cd1a..84c6108863 100644 --- a/awx/ui/client/src/job-templates/list/job-templates-list.route.js +++ b/awx/ui/client/src/templates/list/templates-list.route.js @@ -27,10 +27,10 @@ export default { searchPrefix: 'template', views: { '@': { - controller: 'JobTemplatesListController', - templateProvider: function(JobTemplateList, generateList) { + controller: 'TemplatesListController', + templateProvider: function(TemplateList, generateList) { let html = generateList.build({ - list: JobTemplateList, + list: TemplateList, mode: 'edit' }); html = generateList.wrapPanel(html); @@ -39,7 +39,7 @@ export default { } }, resolve: { - Dataset: ['JobTemplateList', 'QuerySet', '$stateParams', 'GetBasePath', + Dataset: ['TemplateList', 'QuerySet', '$stateParams', 'GetBasePath', function(list, qs, $stateParams, GetBasePath) { let path = GetBasePath(list.basePath) || GetBasePath(list.name); return qs.search(path, $stateParams[`${list.iterator}_search`]); diff --git a/awx/ui/client/src/job-templates/main.js b/awx/ui/client/src/templates/main.js similarity index 95% rename from awx/ui/client/src/job-templates/main.js rename to awx/ui/client/src/templates/main.js index ad80b12967..06ad97905f 100644 --- a/awx/ui/client/src/job-templates/main.js +++ b/awx/ui/client/src/templates/main.js @@ -4,26 +4,27 @@ * All Rights Reserved *************************************************/ -import jobTemplateService from './job-template.service'; - +import templatesService from './templates.service'; import surveyMaker from './survey-maker/main'; -import jobTemplatesList from './list/main'; -import jobTemplatesAdd from './add-job-template/main'; -import jobTemplatesEdit from './edit-job-template/main'; -import jobTemplatesCopy from './copy/main'; -import workflowAdd from './add-workflow/main'; -import workflowEdit from './edit-workflow/main'; +import templatesList from './list/main'; +import jobTemplatesAdd from './job_templates/add-job-template/main'; +import jobTemplatesEdit from './job_templates/edit-job-template/main'; +import jobTemplatesCopy from './job_templates/copy-job-template/main'; +import workflowAdd from './workflows/add-workflow/main'; +import workflowEdit from './workflows/edit-workflow/main'; import labels from './labels/main'; -import workflowChart from './workflow-chart/main'; -import workflowMaker from './workflow-maker/main'; -import jobTemplatesListRoute from './list/job-templates-list.route'; +import workflowChart from './workflows/workflow-chart/main'; +import workflowMaker from './workflows/workflow-maker/main'; +import templatesListRoute from './list/templates-list.route'; +import workflowService from './workflows/workflow.service'; export default -angular.module('jobTemplates', [surveyMaker.name, jobTemplatesList.name, jobTemplatesAdd.name, +angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplatesAdd.name, jobTemplatesEdit.name, jobTemplatesCopy.name, labels.name, workflowAdd.name, workflowEdit.name, workflowChart.name, workflowMaker.name ]) - .service('JobTemplateService', jobTemplateService) + .service('TemplatesService', templatesService) + .service('WorkflowHelpService', workflowService) .config(['$stateProvider', 'stateDefinitionsProvider', '$stateExtenderProvider', function($stateProvider, stateDefinitionsProvider, $stateExtenderProvider) { let stateTree, addJobTemplate, editJobTemplate, addWorkflow, editWorkflow, @@ -332,9 +333,9 @@ angular.module('jobTemplates', [surveyMaker.name, jobTemplatesList.name, jobTemp return qs.search(path, $stateParams[`${list.iterator}_search`]); } ], - WorkflowMakerJobTemplateList: ['JobTemplateList', - (JobTemplateList) => { - let list = _.cloneDeep(JobTemplateList); + WorkflowMakerJobTemplateList: ['TemplateList', + (TemplateList) => { + let list = _.cloneDeep(TemplateList); delete list.fields.type; delete list.fields.description; delete list.fields.smart_status; @@ -472,7 +473,7 @@ angular.module('jobTemplates', [surveyMaker.name, jobTemplatesList.name, jobTemp states: _.reduce(generated, (result, definition) => { return result.concat(definition.states); }, [ - stateExtender.buildDefinition(jobTemplatesListRoute), + stateExtender.buildDefinition(templatesListRoute), stateExtender.buildDefinition(workflowMaker), stateExtender.buildDefinition(inventoryLookup), stateExtender.buildDefinition(credentialLookup) diff --git a/awx/ui/client/src/job-templates/survey-maker/main.js b/awx/ui/client/src/templates/survey-maker/main.js similarity index 90% rename from awx/ui/client/src/job-templates/survey-maker/main.js rename to awx/ui/client/src/templates/survey-maker/main.js index d6ac9de3b8..1d41e63aef 100644 --- a/awx/ui/client/src/job-templates/survey-maker/main.js +++ b/awx/ui/client/src/templates/survey-maker/main.js @@ -5,7 +5,7 @@ import render from './render/main'; import shared from './shared/main'; export default - angular.module('jobTemplates.surveyMaker', + angular.module('templates.surveyMaker', [ listGenerator.name, questions.name, surveys.name, diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js b/awx/ui/client/src/templates/survey-maker/questions/edit.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js rename to awx/ui/client/src/templates/survey-maker/questions/edit.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/main.js b/awx/ui/client/src/templates/survey-maker/questions/main.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/questions/main.js rename to awx/ui/client/src/templates/survey-maker/questions/main.js diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js b/awx/ui/client/src/templates/survey-maker/questions/question-scope.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js rename to awx/ui/client/src/templates/survey-maker/questions/question-scope.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/render/main.js b/awx/ui/client/src/templates/survey-maker/render/main.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/main.js rename to awx/ui/client/src/templates/survey-maker/render/main.js diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js b/awx/ui/client/src/templates/survey-maker/render/multiple-choice.directive.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js rename to awx/ui/client/src/templates/survey-maker/render/multiple-choice.directive.js diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html b/awx/ui/client/src/templates/survey-maker/render/multiple-choice.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html rename to awx/ui/client/src/templates/survey-maker/render/multiple-choice.partial.html diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js b/awx/ui/client/src/templates/survey-maker/render/multiselect.directive.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js rename to awx/ui/client/src/templates/survey-maker/render/multiselect.directive.js diff --git a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js b/awx/ui/client/src/templates/survey-maker/render/survey-question.directive.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js rename to awx/ui/client/src/templates/survey-maker/render/survey-question.directive.js diff --git a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html b/awx/ui/client/src/templates/survey-maker/render/survey-question.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html rename to awx/ui/client/src/templates/survey-maker/render/survey-question.partial.html diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/main.js b/awx/ui/client/src/templates/survey-maker/shared/main.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/shared/main.js rename to awx/ui/client/src/templates/survey-maker/shared/main.js diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js b/awx/ui/client/src/templates/survey-maker/shared/question-definition.form.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js rename to awx/ui/client/src/templates/survey-maker/shared/question-definition.form.js diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less b/awx/ui/client/src/templates/survey-maker/shared/survey-controls.block.less similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less rename to awx/ui/client/src/templates/survey-maker/shared/survey-controls.block.less diff --git a/awx/ui/client/src/job-templates/survey-maker/survey-maker.block.less b/awx/ui/client/src/templates/survey-maker/survey-maker.block.less similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/survey-maker.block.less rename to awx/ui/client/src/templates/survey-maker/survey-maker.block.less diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js b/awx/ui/client/src/templates/survey-maker/surveys/add.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js rename to awx/ui/client/src/templates/survey-maker/surveys/add.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js b/awx/ui/client/src/templates/survey-maker/surveys/delete.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js rename to awx/ui/client/src/templates/survey-maker/surveys/delete.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js b/awx/ui/client/src/templates/survey-maker/surveys/edit.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js rename to awx/ui/client/src/templates/survey-maker/surveys/edit.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js b/awx/ui/client/src/templates/survey-maker/surveys/init.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js rename to awx/ui/client/src/templates/survey-maker/surveys/init.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/main.js b/awx/ui/client/src/templates/survey-maker/surveys/main.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/main.js rename to awx/ui/client/src/templates/survey-maker/surveys/main.js diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js b/awx/ui/client/src/templates/survey-maker/surveys/show.factory.js similarity index 100% rename from awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js rename to awx/ui/client/src/templates/survey-maker/surveys/show.factory.js diff --git a/awx/ui/client/src/job-templates/job-template.service.js b/awx/ui/client/src/templates/templates.service.js similarity index 100% rename from awx/ui/client/src/job-templates/job-template.service.js rename to awx/ui/client/src/templates/templates.service.js diff --git a/awx/ui/client/src/job-templates/add-workflow/main.js b/awx/ui/client/src/templates/workflows/add-workflow/main.js similarity index 100% rename from awx/ui/client/src/job-templates/add-workflow/main.js rename to awx/ui/client/src/templates/workflows/add-workflow/main.js diff --git a/awx/ui/client/src/job-templates/add-workflow/workflow-add.controller.js b/awx/ui/client/src/templates/workflows/add-workflow/workflow-add.controller.js similarity index 96% rename from awx/ui/client/src/job-templates/add-workflow/workflow-add.controller.js rename to awx/ui/client/src/templates/workflows/add-workflow/workflow-add.controller.js index fd51a4adc1..11c7e35a5c 100644 --- a/awx/ui/client/src/job-templates/add-workflow/workflow-add.controller.js +++ b/awx/ui/client/src/templates/workflows/add-workflow/workflow-add.controller.js @@ -6,11 +6,11 @@ export default [ '$scope', 'WorkflowForm', 'GenerateForm', 'Alert', 'ProcessErrors', 'ClearScope', - 'Wait', '$state', 'CreateSelect2', 'JobTemplateService', 'ToJSON', + 'Wait', '$state', 'CreateSelect2', 'TemplatesService', 'ToJSON', 'ParseTypeChange', 'OrganizationList', '$q', 'Rest', 'GetBasePath', function( $scope, WorkflowForm, GenerateForm, Alert, ProcessErrors, ClearScope, - Wait, $state, CreateSelect2, JobTemplateService, ToJSON, + Wait, $state, CreateSelect2, TemplatesService, ToJSON, ParseTypeChange, OrganizationList, $q, Rest, GetBasePath ) { @@ -45,7 +45,7 @@ }); // Go out and grab the possible labels - JobTemplateService.getLabelOptions() + TemplatesService.getLabelOptions() .then(function(data){ $scope.labelOptions = data; // select2-ify the labels input @@ -98,7 +98,7 @@ .filter("[data-label-is-present=true]") .map((i, val) => ({name: $(val).text()})); - JobTemplateService.createWorkflowJobTemplate(data) + TemplatesService.createWorkflowJobTemplate(data) .then(function(data) { let orgDefer = $q.defer(); diff --git a/awx/ui/client/src/job-templates/add-workflow/workflow-add.partial.html b/awx/ui/client/src/templates/workflows/add-workflow/workflow-add.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/add-workflow/workflow-add.partial.html rename to awx/ui/client/src/templates/workflows/add-workflow/workflow-add.partial.html diff --git a/awx/ui/client/src/job-templates/edit-workflow/main.js b/awx/ui/client/src/templates/workflows/edit-workflow/main.js similarity index 100% rename from awx/ui/client/src/job-templates/edit-workflow/main.js rename to awx/ui/client/src/templates/workflows/edit-workflow/main.js diff --git a/awx/ui/client/src/job-templates/edit-workflow/workflow-edit.controller.js b/awx/ui/client/src/templates/workflows/edit-workflow/workflow-edit.controller.js similarity index 97% rename from awx/ui/client/src/job-templates/edit-workflow/workflow-edit.controller.js rename to awx/ui/client/src/templates/workflows/edit-workflow/workflow-edit.controller.js index c666f44815..c4cf1c13e3 100644 --- a/awx/ui/client/src/job-templates/edit-workflow/workflow-edit.controller.js +++ b/awx/ui/client/src/templates/workflows/edit-workflow/workflow-edit.controller.js @@ -8,12 +8,12 @@ [ '$scope', '$stateParams', 'WorkflowForm', 'GenerateForm', 'Alert', 'ProcessErrors', 'ClearScope', 'GetBasePath', '$q', 'ParseTypeChange', 'Wait', 'Empty', 'ToJSON', 'initSurvey', '$state', 'CreateSelect2', 'ParseVariableString', - 'JobTemplateService', 'OrganizationList', 'Rest', + 'TemplatesService', 'OrganizationList', 'Rest', function( $scope, $stateParams, WorkflowForm, GenerateForm, Alert, ProcessErrors, ClearScope, GetBasePath, $q, ParseTypeChange, Wait, Empty, ToJSON, SurveyControllerInit, $state, CreateSelect2, ParseVariableString, - JobTemplateService, OrganizationList, Rest + TemplatesService, OrganizationList, Rest ) {window.state = $state; ClearScope(); @@ -192,7 +192,7 @@ }); // Get the workflow nodes - JobTemplateService.getWorkflowJobTemplateNodes(id) + TemplatesService.getWorkflowJobTemplateNodes(id) .then(function(data){ let nodesArray = data.data.results; @@ -251,7 +251,7 @@ }); // Go out and GET the workflow job temlate data needed to populate the form - JobTemplateService.getWorkflowJobTemplate(id) + TemplatesService.getWorkflowJobTemplate(id) .then(function(data){ let workflowJobTemplateData = data.data; $scope.workflow_job_template_obj = workflowJobTemplateData; @@ -392,7 +392,7 @@ if(params.node.isNew) { - JobTemplateService.addWorkflowNode({ + TemplatesService.addWorkflowNode({ url: generatePostUrl(), data: buildSendableNodeData() }) @@ -500,7 +500,7 @@ // these promise arrays to play nicely. I tried to just append // a single promise to deletePromises but it just wasn't working let editWorkflowJobTemplate = [id].map(function(id) { - return JobTemplateService.updateWorkflowJobTemplate({ + return TemplatesService.updateWorkflowJobTemplate({ id: id, data: data }); @@ -510,7 +510,7 @@ let completionCallback = function() { let disassociatePromises = $scope.disassociateRequests.map(function(request) { - return JobTemplateService.disassociateWorkflowNode({ + return TemplatesService.disassociateWorkflowNode({ parentId: request.parentId, nodeId: request.nodeId, edge: request.edge @@ -518,7 +518,7 @@ }); let editNodePromises = $scope.editRequests.map(function(request) { - return JobTemplateService.editWorkflowNode({ + return TemplatesService.editWorkflowNode({ id: request.id, data: request.data }); @@ -528,7 +528,7 @@ .then(function() { let associatePromises = $scope.associateRequests.map(function(request) { - return JobTemplateService.associateWorkflowNode({ + return TemplatesService.associateWorkflowNode({ parentId: request.parentId, nodeId: request.nodeId, edge: request.edge @@ -536,7 +536,7 @@ }); let deletePromises = $scope.workflowTree.data.deletedNodes.map(function(nodeId) { - return JobTemplateService.deleteWorkflowJobTemplateNode(nodeId); + return TemplatesService.deleteWorkflowJobTemplateNode(nodeId); }); $q.all(associatePromises.concat(deletePromises)) @@ -634,7 +634,7 @@ else { let deletePromises = $scope.workflowTree.data.deletedNodes.map(function(nodeId) { - return JobTemplateService.deleteWorkflowJobTemplateNode(nodeId); + return TemplatesService.deleteWorkflowJobTemplateNode(nodeId); }); $q.all(deletePromises.concat(editWorkflowJobTemplate)) diff --git a/awx/ui/client/src/job-templates/edit-workflow/workflow-edit.partial.html b/awx/ui/client/src/templates/workflows/edit-workflow/workflow-edit.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/edit-workflow/workflow-edit.partial.html rename to awx/ui/client/src/templates/workflows/edit-workflow/workflow-edit.partial.html diff --git a/awx/ui/client/src/job-templates/workflow-chart/main.js b/awx/ui/client/src/templates/workflows/workflow-chart/main.js similarity index 85% rename from awx/ui/client/src/job-templates/workflow-chart/main.js rename to awx/ui/client/src/templates/workflows/workflow-chart/main.js index 76f0484889..2b1851a972 100644 --- a/awx/ui/client/src/job-templates/workflow-chart/main.js +++ b/awx/ui/client/src/templates/workflows/workflow-chart/main.js @@ -7,5 +7,5 @@ import workflowChart from './workflow-chart.directive'; export default - angular.module('jobTemplatesWorkflowChart', []) + angular.module('workflowChart', []) .directive('workflowChart', workflowChart); diff --git a/awx/ui/client/src/job-templates/workflow-chart/workflow-chart.block.less b/awx/ui/client/src/templates/workflows/workflow-chart/workflow-chart.block.less similarity index 100% rename from awx/ui/client/src/job-templates/workflow-chart/workflow-chart.block.less rename to awx/ui/client/src/templates/workflows/workflow-chart/workflow-chart.block.less diff --git a/awx/ui/client/src/job-templates/workflow-chart/workflow-chart.directive.js b/awx/ui/client/src/templates/workflows/workflow-chart/workflow-chart.directive.js similarity index 100% rename from awx/ui/client/src/job-templates/workflow-chart/workflow-chart.directive.js rename to awx/ui/client/src/templates/workflows/workflow-chart/workflow-chart.directive.js diff --git a/awx/ui/client/src/job-templates/workflow-maker/main.js b/awx/ui/client/src/templates/workflows/workflow-maker/main.js similarity index 74% rename from awx/ui/client/src/job-templates/workflow-maker/main.js rename to awx/ui/client/src/templates/workflows/workflow-maker/main.js index 8266617679..821dfe18aa 100644 --- a/awx/ui/client/src/job-templates/workflow-maker/main.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/main.js @@ -1,10 +1,8 @@ -import helper from './workflow-help.service'; import workflowMaker from './workflow-maker.directive'; import WorkflowMakerController from './workflow-maker.controller'; export default - angular.module('jobTemplates.workflowMaker', []) - .service('WorkflowHelpService', helper) + angular.module('templates.workflowMaker', []) // In order to test this controller I had to expose it at the module level // like so. Is this correct? Is there a better pattern for doing this? .controller('WorkflowMakerController', WorkflowMakerController) diff --git a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.block.less b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.block.less similarity index 100% rename from awx/ui/client/src/job-templates/workflow-maker/workflow-maker.block.less rename to awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.block.less diff --git a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.controller.js b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js similarity index 97% rename from awx/ui/client/src/job-templates/workflow-maker/workflow-maker.controller.js rename to awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js index 01cc4441c2..2a53614137 100644 --- a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.controller.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js @@ -4,12 +4,12 @@ * All Rights Reserved *************************************************/ -export default ['$scope', 'WorkflowHelpService', 'generateList', 'JobTemplateList', 'ProjectList', - 'GetBasePath', 'Wait', 'JobTemplateService', '$state', +export default ['$scope', 'WorkflowHelpService', 'generateList', 'TemplateList', 'ProjectList', + 'GetBasePath', 'Wait', 'TemplatesService', '$state', 'ProcessErrors', 'InventorySourcesList', 'CreateSelect2', 'WorkflowMakerForm', 'GenerateForm', 'InventoryList', 'CredentialList', '$q', - function($scope, WorkflowHelpService, GenerateList, JobTemplateList, ProjectList, - GetBasePath, Wait, JobTemplateService, $state, + function($scope, WorkflowHelpService, GenerateList, TemplateList, ProjectList, + GetBasePath, Wait, TemplatesService, $state, ProcessErrors, InventorySourcesList, CreateSelect2, WorkflowMakerForm, GenerateForm, InventoryList, CredentialList, $q) { @@ -59,11 +59,11 @@ export default ['$scope', 'WorkflowHelpService', 'generateList', 'JobTemplateLis $scope.closeWorkflowMaker = function() { // Revert the data to the master which was created when the dialog was opened $scope.treeData.data = angular.copy($scope.treeDataMaster); - WorkflowHelpService.closeDialog(); + $scope.closeDialog(); }; $scope.saveWorkflowMaker = function() { - WorkflowHelpService.closeDialog(); + $scope.closeDialog(); }; /* ADD NODE FUNCTIONS */ @@ -348,7 +348,7 @@ export default ['$scope', 'WorkflowHelpService', 'generateList', 'JobTemplateLis // This is a node that we got back from the api with an incomplete // unified job template so we're going to pull down the whole object - JobTemplateService.getUnifiedJobTemplate($scope.nodeBeingEdited.unifiedJobTemplate.id) + TemplatesService.getUnifiedJobTemplate($scope.nodeBeingEdited.unifiedJobTemplate.id) .then(function(data) { $scope.nodeBeingEdited.unifiedJobTemplate = _.clone(data.data.results[0]); @@ -358,12 +358,12 @@ export default ['$scope', 'WorkflowHelpService', 'generateList', 'JobTemplateLis let retrievingInventory = false; if ($scope.nodeBeingEdited.unifiedJobTemplate.ask_credential_on_launch && $scope.nodeBeingEdited.originalNodeObj.credential) { - defers.push(JobTemplateService.getCredential($scope.nodeBeingEdited.originalNodeObj.credential)); + defers.push(TemplatesService.getCredential($scope.nodeBeingEdited.originalNodeObj.credential)); retrievingCredential = true; } if ($scope.nodeBeingEdited.unifiedJobTemplate.ask_inventory_on_launch && $scope.nodeBeingEdited.originalNodeObj.inventory) { - defers.push(JobTemplateService.getInventory($scope.nodeBeingEdited.originalNodeObj.inventory)); + defers.push(TemplatesService.getInventory($scope.nodeBeingEdited.originalNodeObj.inventory)); retrievingInventory = true; } diff --git a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.directive.js b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.directive.js similarity index 86% rename from awx/ui/client/src/job-templates/workflow-maker/workflow-maker.directive.js rename to awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.directive.js index 95da492a14..3e001d2817 100644 --- a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.directive.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.directive.js @@ -6,8 +6,8 @@ import workflowMakerController from './workflow-maker.controller'; -export default ['templateUrl', 'CreateDialog', 'Wait', - function(templateUrl, CreateDialog, Wait) { +export default ['templateUrl', 'CreateDialog', 'Wait', '$state', + function(templateUrl, CreateDialog, Wait, $state) { return { scope: { treeData: '=', @@ -49,6 +49,12 @@ export default ['templateUrl', 'CreateDialog', 'Wait', scope.$broadcast("refreshWorkflowChart"); }); + + scope.closeDialog = function() { + $('#workflow-modal-dialog').dialog('destroy'); + + $state.go('^'); + }; } }; } diff --git a/awx/ui/client/src/job-templates/workflow-maker/workflow-maker.partial.html b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html similarity index 100% rename from awx/ui/client/src/job-templates/workflow-maker/workflow-maker.partial.html rename to awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html diff --git a/awx/ui/client/src/job-templates/workflow-maker/workflow-help.service.js b/awx/ui/client/src/templates/workflows/workflow.service.js similarity index 94% rename from awx/ui/client/src/job-templates/workflow-maker/workflow-help.service.js rename to awx/ui/client/src/templates/workflows/workflow.service.js index 25b889e4fd..65d0807424 100644 --- a/awx/ui/client/src/job-templates/workflow-maker/workflow-help.service.js +++ b/awx/ui/client/src/templates/workflows/workflow.service.js @@ -1,10 +1,5 @@ -export default ['CreateDialog', 'Wait', '$q', '$state', function(CreateDialog, Wait, $q, $state){ +export default [function(){ return { - closeDialog: function() { - $('#workflow-modal-dialog').dialog('destroy'); - - $state.go('^'); - }, searchTree: function(params) { // params.element // params.matchingId diff --git a/awx/ui/client/src/workflow-results/workflow-results.controller.js b/awx/ui/client/src/workflow-results/workflow-results.controller.js index d3f6eb4da9..212907e936 100644 --- a/awx/ui/client/src/workflow-results/workflow-results.controller.js +++ b/awx/ui/client/src/workflow-results/workflow-results.controller.js @@ -92,6 +92,136 @@ export default ['workflowData', $scope.stdoutArr = []; + $scope.treeData = { + data: { + id: 1, + canDelete: false, + canEdit: false, + canAddTo: true, + isStartNode: true, + unifiedJobTemplate: { + name: "Workflow Launch" + }, + children: [], + deletedNodes: [], + totalNodes: 0 + }, + nextIndex: 2 + }; + + function buildBranch(params) { + // params.nodeId + // params.parentId + // params.edgeType + // params.nodesObj + // params.isRoot + + let treeNode = { + children: [], + c: "#D7D7D7", + id: $scope.treeData.nextIndex, + nodeId: params.nodeId, + canDelete: true, + canEdit: true, + canAddTo: true, + placeholder: false, + edgeType: params.edgeType, + unifiedJobTemplate: _.clone(params.nodesObj[params.nodeId].summary_fields.unified_job_template), + isNew: false, + edited: false, + originalEdge: params.edgeType, + originalNodeObj: _.clone(params.nodesObj[params.nodeId]), + promptValues: {}, + isRoot: params.isRoot ? params.isRoot : false + }; + + $scope.treeData.data.totalNodes++; + + $scope.treeData.nextIndex++; + + if(params.parentId) { + treeNode.originalParentId = params.parentId; + } + + // Loop across the success nodes and add them recursively + _.forEach(params.nodesObj[params.nodeId].success_nodes, function(successNodeId) { + treeNode.children.push(buildBranch({ + nodeId: successNodeId, + parentId: params.nodeId, + edgeType: "success", + nodesObj: params.nodesObj + })); + }); + + // failure nodes + _.forEach(params.nodesObj[params.nodeId].failure_nodes, function(failureNodesId) { + treeNode.children.push(buildBranch({ + nodeId: failureNodesId, + parentId: params.nodeId, + edgeType: "failure", + nodesObj: params.nodesObj + })); + }); + + // always nodes + _.forEach(params.nodesObj[params.nodeId].always_nodes, function(alwaysNodesId) { + treeNode.children.push(buildBranch({ + nodeId: alwaysNodesId, + parentId: params.nodeId, + edgeType: "always", + nodesObj: params.nodesObj + })); + }); + + return treeNode; + } + + + let nodesArray = $scope.workflow_nodes; + let nodesObj = {}; + let nonRootNodeIds = []; + let allNodeIds = []; + + // Determine which nodes are root nodes + _.forEach(nodesArray, function(node) { + nodesObj[node.id] = _.clone(node); + + allNodeIds.push(node.id); + + _.forEach(node.success_nodes, function(nodeId){ + nonRootNodeIds.push(nodeId); + }); + _.forEach(node.failure_nodes, function(nodeId){ + nonRootNodeIds.push(nodeId); + }); + _.forEach(node.always_nodes, function(nodeId){ + nonRootNodeIds.push(nodeId); + }); + }); + + let rootNodes = _.difference(allNodeIds, nonRootNodeIds); + + // Loop across the root nodes and re-build the tree + _.forEach(rootNodes, function(rootNodeId) { + let branch = buildBranch({ + nodeId: rootNodeId, + edgeType: "always", + nodesObj: nodesObj, + isRoot: true + }); + + $scope.treeData.data.children.push(branch); + }); + + // TODO: I think that the workflow chart directive (and eventually d3) is meddling with + // this treeData object and removing the children object for some reason (?) + // This happens on occasion and I think is a race condition (?) + if(!$scope.treeData.data.children) { + $scope.treeData.data.children = []; + } + + $scope.canAddWorkflowJobTemplate = false; + // EVENT STUFF BELOW // just putting the event queue on scope so it can be inspected in the diff --git a/awx/ui/client/src/workflow-results/workflow-results.partial.html b/awx/ui/client/src/workflow-results/workflow-results.partial.html index 9612719221..616b035d02 100644 --- a/awx/ui/client/src/workflow-results/workflow-results.partial.html +++ b/awx/ui/client/src/workflow-results/workflow-results.partial.html @@ -228,7 +228,7 @@ - + diff --git a/awx/ui/tests/spec/job-templates/job-templates-list.controller-test.js b/awx/ui/tests/spec/templates/templates-list.controller-test.js similarity index 87% rename from awx/ui/tests/spec/job-templates/job-templates-list.controller-test.js rename to awx/ui/tests/spec/templates/templates-list.controller-test.js index 5d542622cd..837b42ff12 100644 --- a/awx/ui/tests/spec/job-templates/job-templates-list.controller-test.js +++ b/awx/ui/tests/spec/templates/templates-list.controller-test.js @@ -1,11 +1,11 @@ 'use strict'; -describe('Controller: JobTemplatesList', () => { +describe('Controller: TemplatesList', () => { // Setup let scope, rootScope, state, - JobTemplatesListController, + TemplatesListController, ClearScope, GetChoices, Alert, @@ -14,13 +14,13 @@ describe('Controller: JobTemplatesList', () => { rbacUiControlService, canAddDeferred, q, - JobTemplateService, + TemplatesService, deleteWorkflowJobTemplateDeferred, deleteJobTemplateDeferred, Dataset; beforeEach(angular.mock.module('Tower')); - beforeEach(angular.mock.module('jobTemplates', ($provide) => { + beforeEach(angular.mock.module('templates', ($provide) => { state = jasmine.createSpyObj('state', [ '$get', @@ -38,7 +38,7 @@ describe('Controller: JobTemplatesList', () => { } }; - JobTemplateService = { + TemplatesService = { deleteWorkflowJobTemplate: function(){ return angular.noop; }, @@ -85,10 +85,10 @@ describe('Controller: JobTemplatesList', () => { rbacUiControlService.canAdd = jasmine.createSpy('canAdd').and.returnValue(canAddDeferred.promise); - JobTemplateService.deleteWorkflowJobTemplate = jasmine.createSpy('deleteWorkflowJobTemplate').and.returnValue(deleteWorkflowJobTemplateDeferred.promise); - JobTemplateService.deleteJobTemplate = jasmine.createSpy('deleteJobTemplate').and.returnValue(deleteJobTemplateDeferred.promise); + TemplatesService.deleteWorkflowJobTemplate = jasmine.createSpy('deleteWorkflowJobTemplate').and.returnValue(deleteWorkflowJobTemplateDeferred.promise); + TemplatesService.deleteJobTemplate = jasmine.createSpy('deleteJobTemplate').and.returnValue(deleteJobTemplateDeferred.promise); - JobTemplatesListController = $controller('JobTemplatesListController', { + TemplatesListController = $controller('TemplatesListController', { $scope: scope, $rootScope: rootScope, $state: state, @@ -98,7 +98,7 @@ describe('Controller: JobTemplatesList', () => { Prompt: Prompt, InitiatePlaybookRun: InitiatePlaybookRun, rbacUiControlService: rbacUiControlService, - JobTemplateService: JobTemplateService, + TemplatesService: TemplatesService, Dataset: Dataset }); })); @@ -163,7 +163,7 @@ describe('Controller: JobTemplatesList', () => { expect(Prompt).toHaveBeenCalled(); }); - it('should call JobTemplateService.deleteWorkflowJobTemplate when the user takes affirmative action on the delete modal and type = "Workflow Job Template"', ()=>{ + it('should call TemplatesService.deleteWorkflowJobTemplate when the user takes affirmative action on the delete modal and type = "Workflow Job Template"', ()=>{ // Note that Prompt has been mocked up above to immediately call the callback function that gets passed in // which is how we access the private function in the controller @@ -174,10 +174,10 @@ describe('Controller: JobTemplatesList', () => { }; scope.deleteJobTemplate(testTemplate); - expect(JobTemplateService.deleteWorkflowJobTemplate).toHaveBeenCalled(); + expect(TemplatesService.deleteWorkflowJobTemplate).toHaveBeenCalled(); }); - it('should call JobTemplateService.deleteJobTemplate when the user takes affirmative action on the delete modal and type = "Workflow Job Template"', ()=>{ + it('should call TemplatesService.deleteJobTemplate when the user takes affirmative action on the delete modal and type = "Workflow Job Template"', ()=>{ // Note that Prompt has been mocked up above to immediately call the callback function that gets passed in // which is how we access the private function in the controller @@ -188,7 +188,7 @@ describe('Controller: JobTemplatesList', () => { }; scope.deleteJobTemplate(testTemplate); - expect(JobTemplateService.deleteJobTemplate).toHaveBeenCalled(); + expect(TemplatesService.deleteJobTemplate).toHaveBeenCalled(); }); }); diff --git a/awx/ui/tests/spec/workflows/workflow-add.controller-test.js b/awx/ui/tests/spec/workflows/workflow-add.controller-test.js index a631ac66ff..35f85ad80b 100644 --- a/awx/ui/tests/spec/workflows/workflow-add.controller-test.js +++ b/awx/ui/tests/spec/workflows/workflow-add.controller-test.js @@ -8,7 +8,7 @@ describe('Controller: WorkflowAdd', () => { ClearScope, Alert, GenerateForm, - JobTemplateService, + TemplatesService, q, getLabelsDeferred, createWorkflowJobTemplateDeferred, @@ -20,7 +20,7 @@ describe('Controller: WorkflowAdd', () => { ToJSON; beforeEach(angular.mock.module('Tower')); - beforeEach(angular.mock.module('jobTemplates', ($provide) => { + beforeEach(angular.mock.module('templates', ($provide) => { state = jasmine.createSpyObj('state', [ '$get', @@ -35,7 +35,7 @@ describe('Controller: WorkflowAdd', () => { 'applyDefaults' ]); - JobTemplateService = { + TemplatesService = { getLabelOptions: function(){ return angular.noop; }, @@ -79,8 +79,8 @@ describe('Controller: WorkflowAdd', () => { ParseTypeChange = _ParseTypeChange_; ToJSON = _ToJSON_; - JobTemplateService.getLabelOptions = jasmine.createSpy('getLabelOptions').and.returnValue(getLabelsDeferred.promise); - JobTemplateService.createWorkflowJobTemplate = jasmine.createSpy('createWorkflowJobTemplate').and.returnValue(createWorkflowJobTemplateDeferred.promise); + TemplatesService.getLabelOptions = jasmine.createSpy('getLabelOptions').and.returnValue(getLabelsDeferred.promise); + TemplatesService.createWorkflowJobTemplate = jasmine.createSpy('createWorkflowJobTemplate').and.returnValue(createWorkflowJobTemplateDeferred.promise); WorkflowAdd = $controller('WorkflowAdd', { $scope: scope, @@ -88,7 +88,7 @@ describe('Controller: WorkflowAdd', () => { ClearScope: ClearScope, Alert: Alert, GenerateForm: GenerateForm, - JobTemplateService: JobTemplateService, + TemplatesService: TemplatesService, ProcessErrors: ProcessErrors, CreateSelect2: CreateSelect2, Wait: Wait, @@ -102,7 +102,7 @@ describe('Controller: WorkflowAdd', () => { }); it('should get/set the label options and select2-ify the input', ()=>{ - // Resolve JobTemplateService.getLabelsForJobTemplate + // Resolve TemplatesService.getLabelsForJobTemplate getLabelsDeferred.resolve({ foo: "bar" }); @@ -120,7 +120,7 @@ describe('Controller: WorkflowAdd', () => { }); it('should call ProcessErrors when getLabelsForJobTemplate returns a rejected promise', ()=>{ - // Reject JobTemplateService.getLabelsForJobTemplate + // Reject TemplatesService.getLabelsForJobTemplate getLabelsDeferred.reject({ data: "mockedData", status: 400 @@ -133,11 +133,11 @@ describe('Controller: WorkflowAdd', () => { describe('scope.formSave()', () => { - it('should call JobTemplateService.createWorkflowJobTemplate', ()=>{ + it('should call TemplatesService.createWorkflowJobTemplate', ()=>{ scope.name = "Test Workflow"; scope.description = "This is a test description"; scope.formSave(); - expect(JobTemplateService.createWorkflowJobTemplate).toHaveBeenCalledWith({ + expect(TemplatesService.createWorkflowJobTemplate).toHaveBeenCalledWith({ name: "Test Workflow", description: "This is a test description", labels: undefined, diff --git a/awx/ui/tests/spec/workflows/workflow-maker.controller-test.js b/awx/ui/tests/spec/workflows/workflow-maker.controller-test.js index 0486356249..12bbf8ef74 100644 --- a/awx/ui/tests/spec/workflows/workflow-maker.controller-test.js +++ b/awx/ui/tests/spec/workflows/workflow-maker.controller-test.js @@ -7,7 +7,7 @@ describe('Controller: WorkflowMaker', () => { WorkflowHelpService; beforeEach(angular.mock.module('Tower')); - beforeEach(angular.mock.module('jobTemplates', ($provide) => { + beforeEach(angular.mock.module('templates', ($provide) => { WorkflowHelpService = jasmine.createSpyObj('WorkflowHelpService', [ 'closeDialog', @@ -21,6 +21,7 @@ describe('Controller: WorkflowMaker', () => { beforeEach(angular.mock.inject( ($rootScope, $controller, _WorkflowHelpService_) => { scope = $rootScope.$new(); + scope.closeDialog = jasmine.createSpy(); scope.treeData = { data: { id: 1, @@ -50,9 +51,9 @@ describe('Controller: WorkflowMaker', () => { it('should close the dialog', ()=>{ scope.saveWorkflowMaker(); - expect(WorkflowHelpService.closeDialog).toHaveBeenCalled(); + expect(scope.closeDialog).toHaveBeenCalled(); }); }); - + });