Implement new create and manager trigger UI
Implements the new trigger setup user interface, which is now a linear workflow found on its own page, rather than a tiny modal dialog Fixes #1187
This commit is contained in:
parent
21b09a7451
commit
8e863b8cf5
47 changed files with 1835 additions and 1068 deletions
89
static/js/pages/trigger-setup.js
Normal file
89
static/js/pages/trigger-setup.js
Normal file
|
@ -0,0 +1,89 @@
|
|||
(function() {
|
||||
/**
|
||||
* Trigger setup page.
|
||||
*/
|
||||
angular.module('quayPages').config(['pages', function(pages) {
|
||||
pages.create('trigger-setup', 'trigger-setup.html', TriggerSetupCtrl, {
|
||||
'title': 'Setup build trigger',
|
||||
'description': 'Setup build trigger',
|
||||
'newLayout': true
|
||||
});
|
||||
}]);
|
||||
|
||||
function TriggerSetupCtrl($scope, ApiService, $routeParams, $location, UserService, TriggerService) {
|
||||
var namespace = $routeParams.namespace;
|
||||
var name = $routeParams.name;
|
||||
var trigger_uuid = $routeParams.triggerid;
|
||||
|
||||
var loadRepository = function() {
|
||||
var params = {
|
||||
'repository': namespace + '/' + name
|
||||
};
|
||||
|
||||
$scope.repositoryResource = ApiService.getRepoAsResource(params).get(function(repo) {
|
||||
$scope.repository = repo;
|
||||
});
|
||||
};
|
||||
|
||||
var loadTrigger = function() {
|
||||
var params = {
|
||||
'repository': namespace + '/' + name,
|
||||
'trigger_uuid': trigger_uuid
|
||||
};
|
||||
|
||||
$scope.triggerResource = ApiService.getBuildTriggerAsResource(params).get(function(trigger) {
|
||||
$scope.trigger = trigger;
|
||||
});
|
||||
};
|
||||
|
||||
loadTrigger();
|
||||
loadRepository();
|
||||
|
||||
$scope.state = 'managing';
|
||||
|
||||
$scope.activateTrigger = function(config, pull_robot) {
|
||||
$scope.state = 'activating';
|
||||
var params = {
|
||||
'repository': namespace + '/' + name,
|
||||
'trigger_uuid': trigger_uuid
|
||||
};
|
||||
|
||||
var data = {
|
||||
'config': config
|
||||
};
|
||||
|
||||
if (pull_robot) {
|
||||
data['pull_robot'] = pull_robot['name'];
|
||||
}
|
||||
|
||||
var errorHandler = ApiService.errorDisplay('Cannot activate build trigger', function(resp) {
|
||||
$scope.state = 'managing';
|
||||
return ApiService.getErrorMessage(resp) +
|
||||
'\n\nNote: Errors can occur if you do not have admin access on the repository';
|
||||
});
|
||||
|
||||
ApiService.activateBuildTrigger(data, params).then(function(resp) {
|
||||
$scope.trigger['is_active'] = true;
|
||||
$scope.trigger['config'] = resp['config'];
|
||||
$scope.trigger['pull_robot'] = resp['pull_robot'];
|
||||
$scope.trigger['repository_url'] = resp['repository_url'];
|
||||
$scope.state = 'activated';
|
||||
|
||||
// If there are no credentials to display, redirect to the builds tab.
|
||||
if (!$scope.trigger['config'].credentials) {
|
||||
$location.url('/repository/' + namespace + '/' + name + '?tab=builds');
|
||||
}
|
||||
}, errorHandler);
|
||||
};
|
||||
|
||||
$scope.getTriggerIcon = function() {
|
||||
if (!$scope.trigger) { return ''; }
|
||||
return TriggerService.getIcon($scope.trigger.service);
|
||||
};
|
||||
|
||||
$scope.getTriggerId = function() {
|
||||
if (!trigger_uuid) { return ''; }
|
||||
return trigger_uuid.split('-')[0];
|
||||
};
|
||||
}
|
||||
}());
|
Reference in a new issue