updates on modal-dialog and others of UI

This commit is contained in:
kunw 2016-05-11 15:57:52 +08:00
parent 8d7bb89e4f
commit b135cfcfbe
21 changed files with 177 additions and 92 deletions

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICWDCCAcGgAwIBAgIJAN1nLuloDeHNMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTYwMTI3MDQyMDM1WhcNNDMwNjE0MDQyMDM1WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQClak/4HO7EeLU0w/BhtVENPLOqU0AP2QjVUdg1qhNiDWVrbWx9KYHqz5Kn0n2+
fxdZo3o7ZY5/2+hhgkKh1z6Kge9XGgune6z4fx2J/X2Se8WsGeQUTiND8ngSnsCA
NtYFwW50SbUZPtyf5XjAfKRofZem51OxbxzN3217L/ubKwIDAQABo1AwTjAdBgNV
HQ4EFgQU5EG2VrB3I6G/TudUpz+kBgQXSvYwHwYDVR0jBBgwFoAU5EG2VrB3I6G/
TudUpz+kBgQXSvYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAx+2eo
oOm0YNy9KQ81+7GQkKVWoPQXjAGGgZuZj8WCFepYqUSJ4q5qbuVCY8WbGcHVk2Rx
Jg1XDCmMjBgYP6S0ikezBRqSmNA3G6oFiydTKBfPs6RNalsB0C78Xk5l5+PIyd2R
jFKOKoMpkjwfeJv2j64WNGoBgqj7XRBoJ11a4g==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQClak/4HO7EeLU0w/BhtVENPLOqU0AP2QjVUdg1qhNiDWVrbWx9
KYHqz5Kn0n2+fxdZo3o7ZY5/2+hhgkKh1z6Kge9XGgune6z4fx2J/X2Se8WsGeQU
TiND8ngSnsCANtYFwW50SbUZPtyf5XjAfKRofZem51OxbxzN3217L/ubKwIDAQAB
AoGBAITMMuNYJwAogCGaZHOs4yMjZoIJT9bpQMQxbsi2f9UqOA/ky0I4foqKloyQ
2k6DLbXTHqBsydgwLgGKWAAiE5xIR2bPMUNSLgjbA2eLly3aOR/0FJ5n09k2EmGg
Am7tLP+6yneXWKVi3HI3NzXriVjWK94WHGGC1b9F+n5CY/2RAkEA1d62OJUNve2k
IY6/b6T0BdssFo3VFcm22vnayEL/wcYrnRfF9Pb5wM4HUUqwVelKTouivXg60GNK
ZKYAx5CtHwJBAMYAEf5u0CQ/8URcwBuMkm0LzK4AM2x1nGs7gIxAEFhu1Z4xPjVe
MtIxuHhDhlLvD760uccmo5yE72QJ1ZrYBHUCQQCAxLZMPRpoB4QyHEOREe1G9V6H
OeBZXPk2wQcEWqqo3gt2a1DqHCXl+2aWgHTJVUxDHHngwFoRDCdHkFeZ0LcbAkAj
T8/luI2WaXD16DS6tQ9IM1qFjbOeHDuRRENgv+wqWVnvpIibq/kUU5m6mRBTqh78
u+6F/fYf6/VluftGalAhAkAukdMtt+sksq2e7Qw2dRr5GXtXjt+Otjj0NaJENmWk
a7SgAs34EOWtbd0XGYpZFrg134MzQGbweFeEUTj++e8p
-----END RSA PRIVATE KEY-----

View File

@ -69,10 +69,6 @@ nav .container-custom {
color: #FFFFFF;
}
.dropdown-menu {
left: 9%;
}
.dropdown-submenu {
position: relative;
}

View File

@ -31,10 +31,8 @@
vm.selectItem = selectItem;
$scope.$watch('vm.publicity', function(current, origin) {
if(typeof current != "undefined") {
vm.isPublic = current ? 1 : 0;
vm.retrieve();
}
vm.isPublic = current ? 1 : 0;
vm.retrieve();
});
function retrieve() {
@ -45,7 +43,13 @@
function getProjectSuccess(data, status) {
vm.projects = data;
if(vm.projects == null) {
vm.publicity = 1;
console.log('vm.projects is null, load public projects.');
}
vm.selectedProject = vm.projects[0];
if($routeParams.project_id){
angular.forEach(vm.projects, function(value, index) {
if(value['ProjectId'] == $routeParams.project_id) {
@ -53,6 +57,7 @@
}
});
}
$location.search('project_id', vm.selectedProject.ProjectId);
vm.checkProjectMember(vm.selectedProject.ProjectId);
vm.resultCount = vm.projects.length;

View File

@ -0,0 +1,17 @@
<div class="modal fade" id="myModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>//vm.message//</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" ng-click="vm.action()">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->

View File

@ -0,0 +1,34 @@
(function() {
'use strict';
angular
.module('harbor.modal.dialog')
.directive('modalDialog', modalDialog);
function ModalDialogController() {
var vm = this;
vm.action();
}
function modalDialog() {
var directive = {
'restrict': 'E',
'templateUrl': '/static/ng/resources/js/components/modal-dialog/modal-dialog.directive.html',
'link': link,
'scope': {
'message': '@',
'action': '&'
},
'controller': ModalDialogController,
'controllerAs': 'vm',
'bindToController': true
};
return directive;
function link(scope, element, attrs, ctrl) {
}
}
})();

View File

@ -0,0 +1,8 @@
(function() {
'use strict';
angular
.module('harbor.modal.dialog', []);
})();

View File

@ -1,15 +1,12 @@
<ul ng-if="!vm.isLoggedIn" class="nav navbar-nav navbar-left">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-globe"></span> Language<span class="caret"></span>
</a>
<ul class="dropdown-menu" style="left: 0;">
<li><a href="#">English</a></li>
<li><a href="#">中文</a></li>
</ul>
</li>
</ul>
<div ng-if="!vm.isLoggedIn" class="dropdown">
<a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-link" data-target="#" href="">
<span class="glyphicon glyphicon-user"></span> Language
</a>
<ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
<li><a href="#">English</a></li>
<li><a href="#">中文</a></li>
</ul>
</div>
<div ng-if="vm.isLoggedIn" class="dropdown">
<a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-link" data-target="#" href="">

View File

@ -6,18 +6,12 @@
.module('harbor.project.member')
.directive('listProjectMember', listProjectMember);
ListProjectMemberController.$inject = ['$scope', 'ListProjectMemberService', '$routeParams'];
ListProjectMemberController.$inject = ['$scope', 'ListProjectMemberService', '$routeParams', 'currentUser'];
function ListProjectMemberController($scope, ListProjectMemberService, $routeParams) {
function ListProjectMemberController($scope, ListProjectMemberService, $routeParams, currentUser) {
var vm = this;
vm.currentUser = {};
$scope.$on('currentUser', function(e, val) {
vm.currentUser = val;
console.log('In list-project-member received current user:' + vm.currentUser);
$scope.$apply();
});
vm.isOpen = false;
vm.search = search;
@ -46,14 +40,13 @@
}
function retrieve() {
ListProjectMemberService(vm.projectId, {'username': vm.username})
.then(getProjectMemberComplete)
.catch(getProjectMemberFailed);
.catch(getProjectMemberFailed);
}
function getProjectMemberComplete(response) {
function getProjectMemberComplete(response) {
vm.currentUser = currentUser.get();
vm.projectMembers = response.data;
}
@ -78,7 +71,7 @@
return directive;
function link(scope, element, attrs, ctrl) {
}
}

View File

@ -9,6 +9,7 @@
</div>
</div>
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<modal-dialog action="vm.deleteImage()" message="//vm.message//"></modal-dialog>
<div class="panel panel-default" ng-repeat="repo in vm.repositories">
<div class="panel-heading" role="tab" id="heading//$index + 1//">
<h4 class="panel-title">

View File

@ -15,6 +15,19 @@
vm.projectId = $routeParams.project_id;
vm.retrieve();
$scope.$on('repoName', function(e, val) {
vm.repoName = val;
});
$scope.$on('tag', function(e, val){
vm.tag = val;
});
vm.message = "Are you sure to delete the tag of image?";
vm.deleteImage = deleteImage;
function retrieve(){
ListRepositoryService(vm.projectId, vm.filterInput)
@ -27,10 +40,12 @@
}
function getRepositoryFailed(repsonse) {
console.log('failed to list repositories:' + response);
console.log('Failed list repositories:' + response);
}
function deleteImage() {
console.log('repoName:' + vm.repoName + ', tag:' + vm.tag);
}
}
function listRepository() {

View File

@ -14,7 +14,7 @@
<td>
<pull-command repo-name="//vm.repoName//" tag="//tag//"></pull-command>
</td>
<td><a href="javascript:void(0);"><span class="glyphicon glyphicon-trash"></span></a></td>
<td><a href="javascript:void(0);" data-toggle="modal" data-target="#myModal" ng-click="vm.deleteTag({repoName: vm.repoName, tag: tag})"><span class="glyphicon glyphicon-trash"></span></a></td>
</tr>
</tbody>
</table>

View File

@ -21,13 +21,22 @@
.catch(getTagFailed);
}
});
vm.deleteTag = deleteTag;
function getTagComplete(response) {
vm.tags = response.data;
}
function getTagFailed(response) {
console.log('Failed get tag:' + response);
}
function deleteTag(e) {
$scope.$emit('tag', e.tag);
$scope.$emit('repoName', e.repoName);
}
}
function listTag() {

View File

@ -0,0 +1,38 @@
(function() {
angular
.module('harbor.app')
.factory('currentUser', currentUser)
.factory('projectMember', projectMember);
function currentUser() {
var currentUser;
return {
set: function(user) {
currentUser = user;
console.log('set currentUser:' + currentUser);
},
get: function() {
console.log('get currentUser:' + currentUser);
return currentUser;
}
}
}
function projectMember() {
var projectMember;
return {
set: function(member) {
projectMember = member;
console.log('set projectMember:');
console.log(projectMember);
},
get: function() {
console.log('get projectMember:');
console.log(projectMember);
return projectMember;
}
}
}
})();

View File

@ -22,6 +22,7 @@
'harbor.services.repository',
'harbor.services.project.member',
'harbor.optional.menu',
'harbor.modal.dialog',
'harbor.sign.in',
'harbor.search',
'harbor.project',

View File

@ -6,9 +6,9 @@
.module('harbor.layout.account.setting')
.controller('AccountSettingController', AccountSettingController);
AccountSettingController.$inject = ['ChangePasswordService', '$scope', '$window'];
AccountSettingController.$inject = ['ChangePasswordService', '$scope', '$window', 'currentUser'];
function AccountSettingController(ChangePasswordService, $scope, $window) {
function AccountSettingController(ChangePasswordService, $scope, $window, currentUser) {
var vm = this;
vm.isOpen = false;
vm.user = {};
@ -21,7 +21,7 @@
$scope.$on('currentUser', function(e, val) {
vm.user = val;
});
function toggleChangePassword() {
if(vm.isOpen) {
vm.isOpen = false;

View File

@ -6,9 +6,9 @@
.module('harbor.layout.project')
.controller('ProjectController', ProjectController);
ProjectController.$inject = ['$scope', 'ListProjectService', 'CurrentUserService'];
ProjectController.$inject = ['$scope', 'ListProjectService'];
function ProjectController($scope, ListProjectService, CurrentUserService) {
function ProjectController($scope, ListProjectService) {
var vm = this;
vm.isOpen = false;
@ -21,14 +21,14 @@
vm.showAddButton = showAddButton;
vm.togglePublicity = togglePublicity;
$scope.$on('currentUser', function(e, val) {
vm.currentUser = val;
});
vm.retrieve();
function retrieve() {
$scope.$on('currentUser', function(e, val) {
vm.currentUser = val;
});
ListProjectService(vm.projectName, vm.publicity)
.success(listProjectSuccess)
.error(listProjectFailed);

View File

@ -6,9 +6,9 @@
.module('harbor.session')
.controller('CurrentUserController', CurrentUserController)
CurrentUserController.$inject = ['CurrentUserService', '$scope', '$timeout', '$window'];
CurrentUserController.$inject = ['CurrentUserService', 'currentUser', '$scope', '$timeout'];
function CurrentUserController(CurrentUserService, $scope, $timeout, $window) {
function CurrentUserController(CurrentUserService, currentUser, $scope, $timeout) {
var vm = this;
@ -20,14 +20,12 @@
console.log('Successful logged in.');
$timeout(function(){
$scope.$broadcast('currentUser', response.data);
currentUser.set(response.data);
}, 50);
}
function getCurrentUserFailed(e){
console.log('Have not logged in yet.');
$timeout(function(){
$scope.$broadcast('currentUser', null);
});
}
}

View File

@ -10,13 +10,13 @@
<span ng-show="vm.publicity">Public Projects</span>
<a ng-show="!vm.publicity" href="#/repositories?project_id=//vm.selectedProject.ProjectId//" class="title-color" ng-click="vm.togglePublicity({publicity: true})">Public Projects</a></h4>
<div class="switch-pane">
<switch-pane-projects is-open="vm.open" selected-project="vm.selectedProject"></switch-pane-projects>
<span>
<navigation-details is-open="vm.open" selected-project="vm.selectedProject" ng-show="vm.isProjectMember"></navigation-details>
</span>
<switch-pane-projects is-open="vm.open" selected-project="vm.selectedProject"></switch-pane-projects>
<span>
<navigation-details is-open="vm.open" selected-project="vm.selectedProject" ng-show="vm.isProjectMember"></navigation-details>
</span>
</div>
<retrieve-projects is-open="vm.open" selected-project="vm.selectedProject" is-project-member="vm.isProjectMember" publicity="vm.publicity"></retrieve-projects>
<!-- Tab panes -->
<retrieve-projects is-open="vm.open" selected-project="vm.selectedProject" is-project-member="vm.isProjectMember" publicity="vm.publicity"></retrieve-projects>
<!-- Tab panes -->
<div class="tab-content" ng-click="vm.closeRetrievePane()">
<ng-view></ng-view>
</div>

View File

@ -10,7 +10,7 @@
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-harbor-navbar-collapse-1">
<optional-menu></optional-menu>
<optional-menu></optional-menu>
<ul class="nav navbar-nav navbar-right">
<li>
<navigation-header></navigation-header>

View File

@ -39,7 +39,7 @@
<script src="/static/ng/resources/js/harbor.module.js"></script>
<script src="/static/ng/resources/js/harbor.config.js"></script>
<script src="/static/ng/resources/js/harbor.initialize.js"></script>
<script src="/static/ng/resources/js/harbor.constants.js"></script>
<script src="/static/ng/resources/js/harbor.data.js"></script>
<script src="/static/ng/resources/js/layout/header/header.module.js"></script>
<script src="/static/ng/resources/js/layout/header/header.controller.js"></script>
@ -121,6 +121,9 @@
<script src="/static/ng/resources/js/components/optional-menu/optional-menu.module.js"></script>
<script src="/static/ng/resources/js/components/optional-menu/optional-menu.directive.js"></script>
<script src="/static/ng/resources/js/components/modal-dialog/modal-dialog.module.js"></script>
<script src="/static/ng/resources/js/components/modal-dialog/modal-dialog.directive.js"></script>
<script src="/static/ng/resources/js/components/validator/validator.module.js"></script>
<script src="/static/ng/resources/js/components/validator/validator.config.js"></script>