mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-27 04:35:16 +01:00
continuous updates for UI
This commit is contained in:
parent
2ab653c642
commit
44a8e5d578
@ -13,6 +13,10 @@
|
|||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
vm.closeRetrievePane = closeRetrievePane;
|
vm.closeRetrievePane = closeRetrievePane;
|
||||||
|
|
||||||
|
$scope.$on('selectedProjectId', function(e, val) {
|
||||||
|
$scope.$broadcast('currentProjectId',val);
|
||||||
|
});
|
||||||
|
|
||||||
ListProjectService({'isPublic' : 0, 'projectName' : ''})
|
ListProjectService({'isPublic' : 0, 'projectName' : ''})
|
||||||
.then(getProjectComplete)
|
.then(getProjectComplete)
|
||||||
.catch(getProjectFailed);
|
.catch(getProjectFailed);
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
.module('harbor.details')
|
.module('harbor.details')
|
||||||
.directive('retrieveProjects', retrieveProjects);
|
.directive('retrieveProjects', retrieveProjects);
|
||||||
|
|
||||||
RetrieveProjectsController.$inject = ['$scope', 'nameFilter', '$routeParams'];
|
RetrieveProjectsController.$inject = ['$scope', 'nameFilter'];
|
||||||
|
|
||||||
function RetrieveProjectsController($scope, nameFilter, $routeParams) {
|
function RetrieveProjectsController($scope, nameFilter) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
vm.selectItem = selectItem;
|
vm.selectItem = selectItem;
|
||||||
@ -16,16 +16,16 @@
|
|||||||
|
|
||||||
$scope.$watch('vm.selectedProject', function(current, origin) {
|
$scope.$watch('vm.selectedProject', function(current, origin) {
|
||||||
if(current) {
|
if(current) {
|
||||||
var projectId = current.ProjectId || $routeParams.project_id;
|
var projectId = current.ProjectId;
|
||||||
vm.selectedId = projectId;
|
vm.selectedId = projectId;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function selectItem(item) {
|
function selectItem(item) {
|
||||||
vm.selectedId = item.ProjectId;
|
vm.selectedId = item.ProjectId;
|
||||||
vm.selectedProject = item;
|
vm.selectedProject = item;
|
||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
|
$scope.$emit('selectedProjectId', vm.selectedId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
.module('harbor.details')
|
.module('harbor.details')
|
||||||
.directive('switchPaneProjects', switchPaneProjects);
|
.directive('switchPaneProjects', switchPaneProjects);
|
||||||
|
|
||||||
SwitchPaneProjectsController.$inject = ['$scope', '$routeParams'];
|
SwitchPaneProjectsController.$inject = ['$scope'];
|
||||||
|
|
||||||
function SwitchPaneProjectsController($scope, $routeParams) {
|
function SwitchPaneProjectsController($scope) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
$scope.$on('isOpen', function(e, val){
|
$scope.$on('isOpen', function(e, val){
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<div class="col-xs-2 col-md-2">
|
<div class="col-xs-2 col-md-2">
|
||||||
<form>
|
<form>
|
||||||
<div class="form-group" style="margin-top: 40%;">
|
<div class="form-group" style="margin-top: 40%;">
|
||||||
<button type="button" class="btn btn-primary" ng-click="vm.search()">Search</button>
|
<button type="button" class="btn btn-primary" ng-click="vm.search({op: vm.op})">Search</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
vm.checkOperation = checkOperation;
|
vm.checkOperation = checkOperation;
|
||||||
vm.search = search;
|
|
||||||
|
|
||||||
vm.opAll = true;
|
vm.opAll = true;
|
||||||
vm.opCreate = true;
|
vm.opCreate = true;
|
||||||
@ -51,15 +50,6 @@
|
|||||||
if(vm.opOthers) {
|
if(vm.opOthers) {
|
||||||
vm.op.push(vm.others);
|
vm.op.push(vm.others);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function search() {
|
|
||||||
if(vm.opAll) {
|
|
||||||
vm.op = [];
|
|
||||||
vm.op.push('all');
|
|
||||||
}
|
|
||||||
console.log(vm.op.join(","));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +58,10 @@
|
|||||||
'restrict': 'E',
|
'restrict': 'E',
|
||||||
'templateUrl': '/static/ng/resources/js/components/log/advanced-search.directive.html',
|
'templateUrl': '/static/ng/resources/js/components/log/advanced-search.directive.html',
|
||||||
'scope': {
|
'scope': {
|
||||||
'isOpen': '='
|
'isOpen': '=',
|
||||||
|
'op': '=',
|
||||||
|
'others': '=',
|
||||||
|
'search': '&'
|
||||||
},
|
},
|
||||||
'controller': AdvancedSearchController,
|
'controller': AdvancedSearchController,
|
||||||
'controllerAs': 'vm',
|
'controllerAs': 'vm',
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
<div class="col-xs-12 col-md-12 each-tab-pane">
|
<div class="col-xs-12 col-md-12 each-tab-pane">
|
||||||
<div class="form-inline">
|
<div class="form-inline">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" placeholder="" size="30">
|
<input type="text" class="form-control" placeholder="" ng-model="vm.username" size="30">
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-primary" type="button"><span class="glyphicon glyphicon-search"></span></button>
|
<button class="btn btn-primary" type="button" ng-click="vm.search({username: vm.username})"><span class="glyphicon glyphicon-search"></span></button>
|
||||||
</span>
|
</span>
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-link" type="button" ng-click="vm.advancedSearch()">Advanced Search</button>
|
<button class="btn btn-link" type="button" ng-click="vm.advancedSearch()">Advanced Search</button>
|
||||||
@ -12,21 +12,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pane">
|
<div class="pane">
|
||||||
<advanced-search ng-show="vm.isOpen" is-open="vm.isOpen"></advanced-search>
|
<advanced-search ng-show="vm.isOpen" is-open="vm.isOpen" op="vm.op" others="vm.others" search='vm.aSearch({op: vm.op, others: vm.others})'></advanced-search>
|
||||||
<div class="sub-pane">
|
<div class="sub-pane">
|
||||||
<table class="table table-pane">
|
<table class="table table-pane">
|
||||||
<thead>
|
<thead>
|
||||||
<th>Username</th><th>Repository Name</th><th>Operation</th><th>Timestamp</th>
|
<th>Username</th><th>Repository Name</th><th>Operation</th><th>Timestamp</th>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr ng-repeat="log in vm.logs">
|
||||||
<td>Haox</td><td>myrepo/Ubuntu</td><td>Create</td><td>2016-03-22 12:35:00</td>
|
<td>//log.Username//</td><td>//log.RepoName//</td><td>//log.Operation//</td><td>//log.OpTime//</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Haox</td><td>myrepo/MySQL</td><td>Push</td><td>2016-03-22 12:35:00</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Daniel</td><td>myproject/Golang</td><td>Create</td><td>2016-03-12 12:35:00</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -6,13 +6,57 @@
|
|||||||
.module('harbor.log')
|
.module('harbor.log')
|
||||||
.directive('listLog', listLog);
|
.directive('listLog', listLog);
|
||||||
|
|
||||||
ListLogController.$inject = ['ListLogService'];
|
ListLogController.$inject = ['ListLogService', '$routeParams'];
|
||||||
|
|
||||||
function ListLogController(ListLogService) {
|
function ListLogController(ListLogService, $routeParams) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
|
vm.projectId = $routeParams.project_id;
|
||||||
|
|
||||||
|
vm.beginTimestamp = 0;
|
||||||
|
vm.endTimestamp = 0;
|
||||||
|
vm.keywords = "";
|
||||||
|
vm.username = "";
|
||||||
|
|
||||||
|
vm.op = [];
|
||||||
|
vm.others = "";
|
||||||
|
|
||||||
|
|
||||||
|
vm.search = search;
|
||||||
|
vm.aSearch= aSearch;
|
||||||
|
|
||||||
vm.advancedSearch = advancedSearch;
|
vm.advancedSearch = advancedSearch;
|
||||||
|
|
||||||
|
|
||||||
|
var queryParams = {
|
||||||
|
'beginTimestamp' : vm.beginTimestamp,
|
||||||
|
'endTimestamp' : vm.endTimestamp,
|
||||||
|
'keywords' : vm.keywords,
|
||||||
|
'projectId': vm.projectId,
|
||||||
|
'username' : vm.username
|
||||||
|
};
|
||||||
|
|
||||||
|
retrieve(queryParams);
|
||||||
|
|
||||||
|
function search(e) {
|
||||||
|
queryParams.username = e.username;
|
||||||
|
retrieve(queryParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
function aSearch(e) {
|
||||||
|
if(e.op == 'all') {
|
||||||
|
queryParams.keywords = '';
|
||||||
|
}else {
|
||||||
|
queryParams.keywords = e.op.join('/') ;
|
||||||
|
}
|
||||||
|
if(e.others != "") {
|
||||||
|
queryParams.keywords += '/' + e.others;
|
||||||
|
}
|
||||||
|
queryParams.username = vm.username;
|
||||||
|
|
||||||
|
retrieve(queryParams);
|
||||||
|
}
|
||||||
|
|
||||||
function advancedSearch() {
|
function advancedSearch() {
|
||||||
if(vm.isOpen){
|
if(vm.isOpen){
|
||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
@ -20,6 +64,20 @@
|
|||||||
vm.isOpen = true;
|
vm.isOpen = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function retrieve(queryParams) {
|
||||||
|
ListLogService(queryParams)
|
||||||
|
.then(listLogComplete)
|
||||||
|
.catch(listLogFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listLogComplete(response) {
|
||||||
|
vm.logs = response.data;
|
||||||
|
}
|
||||||
|
function listLogFailed(e){
|
||||||
|
console.log('listLogFailed:' + e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function listLog() {
|
function listLog() {
|
||||||
|
@ -10,19 +10,32 @@
|
|||||||
|
|
||||||
function AddProjectMemberController(roles, AddProjectMemberService) {
|
function AddProjectMemberController(roles, AddProjectMemberService) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
vm.username = "";
|
||||||
vm.roles = roles();
|
vm.roles = roles();
|
||||||
vm.optRole = 1;
|
vm.optRole = 1;
|
||||||
vm.save = save;
|
vm.save = save;
|
||||||
vm.cancel = cancel;
|
vm.cancel = cancel;
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
console.log(vm.optRole);
|
|
||||||
|
AddProjectMemberService(2, vm.optRole, vm.username)
|
||||||
|
.success(addProjectMemberComplete)
|
||||||
|
.error(addProjectMemberFailed);
|
||||||
|
vm.isOpen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function cancel() {
|
function cancel() {
|
||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function addProjectMemberComplete(data, status, header) {
|
||||||
|
console.log('addProjectMemberComplete: status:' + status + ', data:' + data);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addProjectMemberFailed(data, status, headers) {
|
||||||
|
console.log('addProjectMemberFailed: status:' + status + ', data:' + data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function addProjectMember() {
|
function addProjectMember() {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" placeholder="" ng-model="vm.username" size="30">
|
<input type="text" class="form-control" placeholder="" ng-model="vm.username" size="30">
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-primary" type="button" ng-click="vm.search({username: vm.username})"><span class="glyphicon glyphicon-search"></span></button>
|
<button class="btn btn-primary" type="button" ng-click="vm.search({projectId: vm.projectId, username: vm.username})"><span class="glyphicon glyphicon-search"></span></button>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success" type="button" ng-click="vm.addProjectMember()"><span class="glyphicon glyphicon-plus"></span>Add Member</button>
|
<button class="btn btn-success" type="button" ng-click="vm.addProjectMember()"><span class="glyphicon glyphicon-plus"></span>Add Member</button>
|
||||||
|
@ -6,23 +6,25 @@
|
|||||||
.module('harbor.project.member')
|
.module('harbor.project.member')
|
||||||
.directive('listProjectMember', listProjectMember);
|
.directive('listProjectMember', listProjectMember);
|
||||||
|
|
||||||
ListProjectMemberController.$inject = ['ListProjectMemberService', '$routeParams'];
|
ListProjectMemberController.$inject = ['$scope', 'ListProjectMemberService', '$routeParams'];
|
||||||
|
|
||||||
function ListProjectMemberController(ListProjectMemberService, $routeParams) {
|
function ListProjectMemberController($scope, ListProjectMemberService, $routeParams) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
|
vm.projectId = $routeParams.project_id;
|
||||||
|
|
||||||
vm.isOpen = false;
|
vm.isOpen = false;
|
||||||
vm.username = "";
|
vm.username = "";
|
||||||
|
|
||||||
vm.search = search;
|
vm.search = search;
|
||||||
vm.addProjectMember = addProjectMember;
|
vm.addProjectMember = addProjectMember;
|
||||||
|
|
||||||
vm.projectId = $routeParams.project_id || 2;
|
retrieve(vm.projectId , vm.username);
|
||||||
|
|
||||||
retrieve(vm.username);
|
|
||||||
|
|
||||||
function search(e) {
|
function search(e) {
|
||||||
retrieve(e.username);
|
console.log('project_id:' + e.projectId);
|
||||||
|
retrieve(e.projectId, e.username);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addProjectMember() {
|
function addProjectMember() {
|
||||||
@ -33,8 +35,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function retrieve(username) {
|
function retrieve(projectId, username) {
|
||||||
ListProjectMemberService(vm.projectId, {'username': username})
|
ListProjectMemberService(projectId, {'username': username})
|
||||||
.then(getProjectMemberComplete)
|
.then(getProjectMemberComplete)
|
||||||
.catch(getProjectMemberFailed);
|
.catch(getProjectMemberFailed);
|
||||||
}
|
}
|
||||||
|
@ -5,17 +5,20 @@
|
|||||||
.module('harbor.repository')
|
.module('harbor.repository')
|
||||||
.directive('listRepository', listRepository);
|
.directive('listRepository', listRepository);
|
||||||
|
|
||||||
ListRepositoryController.$inject = ['ListRepositoryService', 'ListTagService', 'nameFilter', '$routeParams'];
|
ListRepositoryController.$inject = ['$scope', 'ListRepositoryService', 'ListTagService', 'nameFilter', '$routeParams'];
|
||||||
|
|
||||||
function ListRepositoryController(ListRepositoryService, ListTagService, nameFilter, $routeParams) {
|
function ListRepositoryController($scope, ListRepositoryService, ListTagService, nameFilter, $routeParams) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
|
vm.projectId = $routeParams.project_id;
|
||||||
vm.filterInput = "";
|
vm.filterInput = "";
|
||||||
|
vm.expand = expand;
|
||||||
|
|
||||||
ListRepositoryService({'projectId': $routeParams.project_id, 'q': ''})
|
ListRepositoryService({'projectId': vm.projectId, 'q': ''})
|
||||||
.then(getRepositoryComplete)
|
.then(getRepositoryComplete)
|
||||||
.catch(getRepositoryFailed);
|
.catch(getRepositoryFailed);
|
||||||
|
|
||||||
|
|
||||||
function getRepositoryComplete(response) {
|
function getRepositoryComplete(response) {
|
||||||
vm.repositories = response.data;
|
vm.repositories = response.data;
|
||||||
}
|
}
|
||||||
@ -24,8 +27,6 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vm.expand = expand;
|
|
||||||
|
|
||||||
function expand(e) {
|
function expand(e) {
|
||||||
vm.tags = [];
|
vm.tags = [];
|
||||||
ListTagService(e.repoName)
|
ListTagService(e.repoName)
|
||||||
@ -47,9 +48,6 @@
|
|||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
templateUrl: '/static/ng/resources/js/components/repository/list-repository.directive.html',
|
templateUrl: '/static/ng/resources/js/components/repository/list-repository.directive.html',
|
||||||
replace: true,
|
replace: true,
|
||||||
scope: {
|
|
||||||
'info': '='
|
|
||||||
},
|
|
||||||
controller: ListRepositoryController,
|
controller: ListRepositoryController,
|
||||||
controllerAs: 'vm',
|
controllerAs: 'vm',
|
||||||
bindToController: true
|
bindToController: true
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<ul class="switch-pane-tabs" role="tablist">
|
<ul class="switch-pane-tabs" role="tablist">
|
||||||
<li><a tag="repositories" ng-click="vm.clickTab()" href="/ng/repository#/repositories">Repositories</a><span class="gutter">|</span></li>
|
<li><a tag="repositories" ng-click="vm.clickTab()" href="/ng/repository#/repositories?project_id=//vm.selectedProject.ProjectId//">Repositories</a><span class="gutter">|</span></li>
|
||||||
<li><a tag="users" ng-click="vm.clickTab()" href="/ng/repository#/users">Users</a><span class="gutter">|</span></li>
|
<li><a tag="users" ng-click="vm.clickTab()" href="/ng/repository#/users?project_id=//vm.selectedProject.ProjectId//">Users</a><span class="gutter">|</span></li>
|
||||||
<li><a tag="logs" ng-click="vm.clickTab()" href="/ng/repository#/logs">Logs</a></li>
|
<li><a tag="logs" ng-click="vm.clickTab()" href="/ng/repository#/logs?project_id=//vm.selectedProject.ProjectId//">Logs</a></li>
|
||||||
</ul>
|
</ul>
|
@ -30,7 +30,8 @@
|
|||||||
templateUrl: '/static/ng/resources/js/layout/navigation/navigation-details.directive.html',
|
templateUrl: '/static/ng/resources/js/layout/navigation/navigation-details.directive.html',
|
||||||
link: link,
|
link: link,
|
||||||
scope: {
|
scope: {
|
||||||
'isOpen': "="
|
'isOpen': '=',
|
||||||
|
'selectedProject': '='
|
||||||
},
|
},
|
||||||
replace: true,
|
replace: true,
|
||||||
controller: NavigationDetailsController,
|
controller: NavigationDetailsController,
|
||||||
|
@ -6,8 +6,14 @@
|
|||||||
.module('harbor.layout.project.member')
|
.module('harbor.layout.project.member')
|
||||||
.controller('ProjectMemberController', ProjectMemberController);
|
.controller('ProjectMemberController', ProjectMemberController);
|
||||||
|
|
||||||
function ProjectMemberController() {
|
ProjectMemberController.$inject = ['$scope'];
|
||||||
|
|
||||||
|
function ProjectMemberController($scope) {
|
||||||
|
var vm = this;
|
||||||
|
$scope.$on('currentProjectId', function(e, val) {
|
||||||
|
console.log('received currentProjecjtId: ' + val + ' in ProjectMemberController');
|
||||||
|
vm.projectId = val;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
})();
|
})();
|
@ -1 +1 @@
|
|||||||
<list-repository info="vm.info"></list-repository>
|
<list-repository></list-repository>
|
@ -6,8 +6,16 @@
|
|||||||
.module('harbor.layout.repository')
|
.module('harbor.layout.repository')
|
||||||
.controller('RepositoryController', RepositoryController);
|
.controller('RepositoryController', RepositoryController);
|
||||||
|
|
||||||
function RepositoryController() {
|
RepositoryController.$inject = ['$scope'];
|
||||||
|
|
||||||
|
function RepositoryController($scope) {
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
|
$scope.$on('currentProjectId', function(e, val) {
|
||||||
|
console.log('received currentProjecjtId: ' + val + ' in RepositoryController');
|
||||||
|
vm.projectId = val;
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})();
|
})();
|
@ -13,7 +13,20 @@
|
|||||||
return LogResult;
|
return LogResult;
|
||||||
|
|
||||||
function LogResult(queryParams) {
|
function LogResult(queryParams) {
|
||||||
$log.info(queryParams);
|
var projectId = queryParams.projectId;
|
||||||
|
var username = queryParams.username;
|
||||||
|
var beginTimestamp = queryParams.beginTimestamp;
|
||||||
|
var endTimestamp = queryParams.endTimestamp;
|
||||||
|
var keywords = queryParams.keywords;
|
||||||
|
|
||||||
|
return $http
|
||||||
|
.post('/api/projects/' + projectId + '/logs/filter', {
|
||||||
|
'beginTimestamp' : beginTimestamp,
|
||||||
|
'endTimestamp' : endTimestamp,
|
||||||
|
'keywords' : keywords,
|
||||||
|
'project_id': projectId,
|
||||||
|
'username' : username
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
@ -12,8 +12,12 @@
|
|||||||
|
|
||||||
return AddProjectMember;
|
return AddProjectMember;
|
||||||
|
|
||||||
function AddProjectMember(projectMember) {
|
function AddProjectMember(projectId, roles, username) {
|
||||||
|
return $http
|
||||||
|
.post('/api/projects/' + projectId + '/members/', {
|
||||||
|
'roles': [ Number(roles) ],
|
||||||
|
'user_name': username
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<div class="switch-pane">
|
<div class="switch-pane">
|
||||||
<switch-pane-projects is-open="vm.open" selected-project="vm.selectedProject"></switch-pane-projects>
|
<switch-pane-projects is-open="vm.open" selected-project="vm.selectedProject"></switch-pane-projects>
|
||||||
<span>
|
<span>
|
||||||
<navigation-details is-open="vm.open"></navigation-details>
|
<navigation-details is-open="vm.open" selected-project="vm.selectedProject"></navigation-details>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<retrieve-projects is-open="vm.open" projects="vm.projects" selected-project="vm.selectedProject"></retrieve-projects>
|
<retrieve-projects is-open="vm.open" projects="vm.projects" selected-project="vm.selectedProject"></retrieve-projects>
|
||||||
@ -18,5 +18,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
Loading…
Reference in New Issue
Block a user