diff --git a/awx/ui/static/js/controllers/JobTemplates.js b/awx/ui/static/js/controllers/JobTemplates.js
index 201ca3ca4b..f2954baf4e 100644
--- a/awx/ui/static/js/controllers/JobTemplates.js
+++ b/awx/ui/static/js/controllers/JobTemplates.js
@@ -669,7 +669,6 @@ export function JobTemplatesEdit($filter, $scope, $rootScope, $compile, $locatio
var defaultUrl = GetBasePath('job_templates'),
generator = GenerateForm,
form = JobTemplateForm(),
- loadingFinishedCount = 0,
base = $location.path().replace(/^\//, '').split('/')[0],
master = {},
id = $routeParams.template_id,
@@ -832,19 +831,15 @@ export function JobTemplatesEdit($filter, $scope, $rootScope, $compile, $locatio
$scope.removeJobTemplateLoadFinished();
}
$scope.removeJobTemplateLoadFinished = $scope.$on('jobTemplateLoadFinished', function () {
- loadingFinishedCount++;
- if (loadingFinishedCount >= 2) {
- // The initial template load finished. Now load related jobs, which
- // will turn off the 'working' spinner.
- for (var set in relatedSets) {
- $scope.search(relatedSets[set].iterator);
- }
- SchedulesControllerInit({
- scope: $scope,
- parent_scope: $scope,
- iterator: 'schedule'
- });
+ for (var set in relatedSets) {
+ $scope.search(relatedSets[set].iterator);
}
+ SchedulesControllerInit({
+ scope: $scope,
+ parent_scope: $scope,
+ iterator: 'schedule'
+ });
+
});
// Set the status/badge for each related job
diff --git a/awx/ui/static/js/forms/JobTemplates.js b/awx/ui/static/js/forms/JobTemplates.js
index 9416a69881..c9e6fea4b9 100644
--- a/awx/ui/static/js/forms/JobTemplates.js
+++ b/awx/ui/static/js/forms/JobTemplates.js
@@ -266,7 +266,6 @@ export default
control: ''+
''+
''+
- // '
A survey is enabled but it does not exist. Create a survey or disable the survey.
'
'A survey is enabled but it does not exist. Create a survey or uncheck the Enable Survey box to disable the survey.
'
},
become_enabled: {
@@ -336,9 +335,81 @@ export default
},
related: {
-
schedules: {
- include: "SchedulesList"
+ type: 'collection',
+ title: 'Schedules',
+ iterator: 'schedule',
+ index: false,
+ open: false,
+
+ actions: {
+ add: {
+ mode: 'all',
+ ngClick: 'addSchedule()',
+ awToolTip: 'Add a new schedule'
+ },
+ refresh: {
+ mode: 'all',
+ awToolTip: "Refresh the page",
+ ngClick: "refreshSchedules()"
+ },
+ stream: {
+ ngClick: "showActivity()",
+ awToolTip: "View Activity Stream",
+ mode: 'edit',
+ awFeature: 'activity_streams'
+ }
+ },
+ fields: {
+ name: {
+ key: true,
+ label: 'Name',
+ ngClick: "editSchedule(schedule.id)",
+ columnClass: "col-md-3 col-sm-3 col-xs-3"
+ },
+ dtstart: {
+ label: 'First Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 hidden-xs"
+ },
+ next_run: {
+ label: 'Next Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 col-xs-3"
+ },
+ dtend: {
+ label: 'Final Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 hidden-xs"
+ }
+ },
+ fieldActions: {
+ "play": {
+ mode: "all",
+ ngClick: "toggleSchedule($event, schedule.id)",
+ awToolTip: "{{ schedule.play_tip }}",
+ dataTipWatch: "schedule.play_tip",
+ iconClass: "{{ 'fa icon-schedule-enabled-' + schedule.enabled }}",
+ dataPlacement: "top"
+ },
+ edit: {
+ label: 'Edit',
+ ngClick: "editSchedule(schedule.id)",
+ icon: 'icon-edit',
+ awToolTip: 'Edit schedule',
+ dataPlacement: 'top'
+ },
+ "delete": {
+ label: 'Delete',
+ ngClick: "deleteSchedule(schedule.id)",
+ icon: 'icon-trash',
+ awToolTip: 'Delete schedule',
+ dataPlacement: 'top'
+ }
+ }
},
"completed_jobs": {
include: "CompletedJobsList"
diff --git a/awx/ui/static/js/forms/Projects.js b/awx/ui/static/js/forms/Projects.js
index d84fc4fbf5..19dcb21da8 100644
--- a/awx/ui/static/js/forms/Projects.js
+++ b/awx/ui/static/js/forms/Projects.js
@@ -3,7 +3,7 @@
*
* All Rights Reserved
*************************************************/
-
+
/**
* @ngdoc function
* @name forms.function:Projects
@@ -25,15 +25,6 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
collapseOpen: true,
actions: {
- // scm_update: {
- // mode: 'edit',
- // ngClick: 'SCMUpdate()',
- // awToolTip: "{{ scm_update_tooltip }}",
- // dataTipWatch: "scm_update_tooltip",
- // ngClass: "scm_type_class",
- // dataPlacement: 'top',
- // ngDisabled: "scm_type.value === 'manual' "
- // },
stream: {
'class': "btn-primary btn-xs activity-btn",
ngClick: "showActivity()",
@@ -296,8 +287,80 @@ angular.module('ProjectFormDefinition', ['SchedulesListDefinition'])
},
schedules: {
- include: "SchedulesList",
- index: false
+ type: 'collection',
+ title: 'Schedules',
+ iterator: 'schedule',
+ index: false,
+ open: false,
+
+ actions: {
+ add: {
+ mode: 'all',
+ ngClick: 'addSchedule()',
+ awToolTip: 'Add a new schedule'
+ },
+ refresh: {
+ mode: 'all',
+ awToolTip: "Refresh the page",
+ ngClick: "refreshSchedules()"
+ },
+ stream: {
+ ngClick: "showActivity()",
+ awToolTip: "View Activity Stream",
+ mode: 'edit',
+ awFeature: 'activity_streams'
+ }
+ },
+ fields: {
+ name: {
+ key: true,
+ label: 'Name',
+ ngClick: "editSchedule(schedule.id)",
+ columnClass: "col-md-3 col-sm-3 col-xs-3"
+ },
+ dtstart: {
+ label: 'First Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 hidden-xs"
+ },
+ next_run: {
+ label: 'Next Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 col-xs-3"
+ },
+ dtend: {
+ label: 'Final Run',
+ filter: "longDate",
+ searchable: false,
+ columnClass: "col-md-2 col-sm-3 hidden-xs"
+ }
+ },
+ fieldActions: {
+ "play": {
+ mode: "all",
+ ngClick: "toggleSchedule($event, schedule.id)",
+ awToolTip: "{{ schedule.play_tip }}",
+ dataTipWatch: "schedule.play_tip",
+ iconClass: "{{ 'fa icon-schedule-enabled-' + schedule.enabled }}",
+ dataPlacement: "top"
+ },
+ edit: {
+ label: 'Edit',
+ ngClick: "editSchedule(schedule.id)",
+ icon: 'icon-edit',
+ awToolTip: 'Edit schedule',
+ dataPlacement: 'top'
+ },
+ "delete": {
+ label: 'Delete',
+ ngClick: "deleteSchedule(schedule.id)",
+ icon: 'icon-trash',
+ awToolTip: 'Delete schedule',
+ dataPlacement: 'top'
+ }
+ }
}
},
diff --git a/awx/ui/static/js/helpers/Schedules.js b/awx/ui/static/js/helpers/Schedules.js
index 53e26d4def..6ca31f5ddd 100644
--- a/awx/ui/static/js/helpers/Schedules.js
+++ b/awx/ui/static/js/helpers/Schedules.js
@@ -3,7 +3,7 @@
*
* All Rights Reserved
*************************************************/
-
+
/**
* @ngdoc function
* @name helpers.function:Schedules
@@ -26,7 +26,8 @@ export default
var buttons,
scope = params.scope,
- callback = params.callback;
+ callback = params.callback,
+ title = params.title;
buttons = [{
"label": "Cancel",
@@ -54,6 +55,7 @@ export default
id: 'scheduler-modal-dialog',
scope: scope,
buttons: buttons,
+ title: title,
width: 700,
height: 725,
minWidth: 400,
@@ -111,7 +113,7 @@ export default
schedule.rrule = schedule.rrule.replace(/ RRULE:/,';');
schedule.rrule = schedule.rrule.replace(/DTSTART:/,'DTSTART=');
- ShowSchedulerModal({ scope: scope, callback: 'DialogReady' });
+ ShowSchedulerModal({ scope: scope, callback: 'DialogReady', title: 'Edit Schedule' });
scope.showRRuleDetail = false;
});
@@ -194,7 +196,7 @@ export default
scheduler.inject('form-container', false);
scheduler.injectDetail('occurrences', false);
scheduler.clear();
- ShowSchedulerModal({ scope: scope, callback: 'DialogReady' });
+ ShowSchedulerModal({ scope: scope, callback: 'DialogReady', title: 'Add Schedule' });
scope.showRRuleDetail = false;
if (scope.removeScheduleSaved) {
diff --git a/awx/ui/static/js/lists/Schedules.js b/awx/ui/static/js/lists/Schedules.js
index ba63031068..f3eb000bce 100644
--- a/awx/ui/static/js/lists/Schedules.js
+++ b/awx/ui/static/js/lists/Schedules.js
@@ -3,7 +3,7 @@
*
* All Rights Reserved
*************************************************/
-
+
export default
angular.module('SchedulesListDefinition', [])
@@ -42,12 +42,6 @@ export default
searchable: false,
columnClass: "col-md-2 col-sm-3 hidden-xs"
}
- /*,
- id: {
- label: 'ID',
- searchType: 'int',
- searchOnly: true
- }*/
},
actions: {
diff --git a/awx/ui/static/js/shared/form-generator.js b/awx/ui/static/js/shared/form-generator.js
index f732f4f4f3..04d91bbb19 100644
--- a/awx/ui/static/js/shared/form-generator.js
+++ b/awx/ui/static/js/shared/form-generator.js
@@ -1818,7 +1818,14 @@ angular.module('FormGenerator', [GeneratorHelpers.name, 'Utilities', listGenerat
html += (fAction.ngHref) ? this.attr(fAction, 'ngHref') : "";
html += (fAction.ngShow) ? this.attr(fAction, 'ngShow') : "";
html += ">";
- html += SelectIcon({ action: act });
+ if (fAction.iconClass) {
+ html += "";
+ } else {
+ html += SelectIcon({
+ action: act
+ });
+ }
+ // html += SelectIcon({ action: act });
//html += (fAction.label) ? " " + fAction.label + "": "";
html += "";
}