Allow users to choose trigger or manual in the build dialog

Fixes #379
This commit is contained in:
Joseph Schorr 2015-08-20 19:24:51 -04:00
parent 9098e0a1fe
commit c0aca54e32
8 changed files with 116 additions and 44 deletions

View file

@ -13,13 +13,17 @@ angular.module('quay').directive('dockerfileBuildDialog', function () {
'showNow': '=showNow',
'buildStarted': '&buildStarted'
},
controller: function($scope, $element) {
controller: function($scope, $element, ApiService) {
$scope.building = false;
$scope.uploading = false;
$scope.startCounter = 0;
$scope.viewTriggers = false;
$scope.triggers = null;
$scope.startTriggerCounter = 0;
$scope.startTrigger = null;
$scope.handleBuildStarted = function(build) {
$('#dockerfilebuildModal').modal('hide');
$element.find('.dockerfilebuildModal').modal('hide');
if ($scope.buildStarted) {
$scope.buildStarted({'build': build});
}
@ -34,9 +38,38 @@ angular.module('quay').directive('dockerfileBuildDialog', function () {
$scope.startCounter++;
};
$scope.showTriggers = function(value) {
$scope.viewTriggers = value;
};
$scope.runTriggerNow = function(trigger) {
$element.find('.dockerfilebuildModal').modal('hide');
$scope.startTrigger = trigger;
$scope.startTriggerCounter++;
};
$scope.$watch('showNow', function(sn) {
if (sn && $scope.repository) {
$('#dockerfilebuildModal').modal({});
$scope.viewTriggers = false;
$scope.startTrigger = null;
$element.find('.dockerfilebuildModal').modal({});
// Load the triggers (if necessary).
if (!$scope.repository || !$scope.repository.can_admin) {
$scope.triggersResource = null;
$scope.triggers = null;
return;
}
var params = {
'repository': $scope.repository.namespace + '/' + $scope.repository.name
};
$scope.triggersResource = ApiService.listBuildTriggersAsResource(params).get(function(resp) {
$scope.triggers = resp.triggers;
$scope.viewTriggers = $scope.triggers.length > 0;
});
}
});
}

View file

@ -24,11 +24,15 @@ angular.module('quay').directive('dockerfileBuildForm', function () {
var MEGABYTE = 1000000;
var MAX_FILE_SIZE = 100 * MEGABYTE;
$scope.hasDockerFile = false;
$scope.pullEntity = null;
$scope.dockerfileState = 'none';
$scope.privateBaseRepository = null;
$scope.isReady = false;
var resetState = function() {
$scope.hasDockerFile = false;
$scope.pullEntity = null;
$scope.dockerfileState = 'none';
$scope.privateBaseRepository = null;
$scope.isReady = false;
};
resetState();
$scope.handleFilesChanged = function(files) {
$scope.dockerfileError = '';
@ -259,6 +263,8 @@ angular.module('quay').directive('dockerfileBuildForm', function () {
$scope.$watch('pullEntity', checkReady);
$scope.$watch('dockerfileState', checkReady);
$scope.$watch('repository', resetState);
$scope.$watch('startNow', function() {
if ($scope.startNow && $scope.repository && !$scope.uploading && !$scope.building) {
startFileUpload();

View file

@ -11,7 +11,7 @@ angular.module('quay').directive('manualTriggerBuildDialog', function () {
'repository': '=repository',
'counter': '=counter',
'trigger': '=trigger',
'startBuild': '&startBuild'
'buildStarted': '&buildStarted'
},
controller: function($scope, $element, ApiService, TriggerService) {
$scope.parameters = {};
@ -19,11 +19,19 @@ angular.module('quay').directive('manualTriggerBuildDialog', function () {
$scope.lookaheadItems = {};
$scope.startTrigger = function() {
$('#startTriggerDialog').modal('hide');
$scope.startBuild({
'trigger': $scope.trigger,
'parameters': $scope.parameters
});
$element.find('.startTriggerDialog').modal('hide');
var params = {
'repository': $scope.repository.namespace + '/' + $scope.repository.name,
'trigger_uuid': $scope.trigger.id
};
ApiService.manuallyStartBuildTrigger($scope.parameters || {}, params).then(function(resp) {
$scope.buildStarted({
'trigger': $scope.trigger,
'parameters': $scope.parameters,
'build': resp
});
}, ApiService.errorDisplay('Could not start build'));
};
$scope.getPattern = function(field) {
@ -50,9 +58,9 @@ angular.module('quay').directive('manualTriggerBuildDialog', function () {
});
}
}
$scope.runParameters = parameters;
$('#startTriggerDialog').modal('show');
$scope.runParameters = parameters;
$element.find('.startTriggerDialog').modal('show');
};
$scope.$watch('counter', function(counter) {