mirror of
https://github.com/goharbor/harbor.git
synced 2024-12-21 08:07:59 +01:00
Merge pull request #868 from wknet123/master
Update for loading projects with pagination of UI.
This commit is contained in:
commit
421cfc48b7
@ -33,24 +33,25 @@
|
||||
vm.isPublic = Number(getParameterByName('is_public', $location.absUrl()));
|
||||
|
||||
var DEFAULT_PAGE = 1;
|
||||
var DEFAULT_PAGE_SIZE = 15;
|
||||
|
||||
vm.page = Number(getParameterByName('page', $location.absUrl()) || DEFAULT_PAGE);
|
||||
vm.pageSize = Number(getParameterByName('page_size', $location.absUrl()) || DEFAULT_PAGE_SIZE);
|
||||
vm.page = DEFAULT_PAGE;
|
||||
|
||||
vm.projects = [];
|
||||
vm.retrieve = retrieve;
|
||||
vm.filterInput = '';
|
||||
vm.selectItem = selectItem;
|
||||
vm.checkProjectMember = checkProjectMember;
|
||||
|
||||
function retrieve() {
|
||||
ListProjectService(vm.projectName, vm.isPublic, vm.page, vm.pageSize)
|
||||
.success(getProjectSuccess)
|
||||
.error(getProjectFailed);
|
||||
ListProjectService(vm.projectName, vm.isPublic, vm.page)
|
||||
.then(getProjectSuccess, getProjectFailed);
|
||||
}
|
||||
|
||||
|
||||
$scope.$watch('vm.page', function(current) {
|
||||
if(current) {
|
||||
vm.retrieve();
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$watch('vm.isPublic', function(current) {
|
||||
vm.projectType = vm.isPublic === 0 ? 'my_project_count' : 'public_project_count';
|
||||
@ -62,8 +63,42 @@
|
||||
}
|
||||
});
|
||||
|
||||
function getProjectSuccess(data, status) {
|
||||
vm.projects = data || [];
|
||||
function parseNextLink(link) {
|
||||
if(link === '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
var parts = link.split(",");
|
||||
for(var i in parts) {
|
||||
var groups = /^\<(.*)\>;\srel=\"(\w+)\"$/.exec($.trim(parts[i]));
|
||||
if(groups && groups.length > 2){
|
||||
var url = groups[1];
|
||||
var rel = groups[2];
|
||||
if(rel === 'next') {
|
||||
return {
|
||||
'page': getParameterByName('page', url),
|
||||
'rel' : rel
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function getProjectSuccess(response) {
|
||||
|
||||
var partialProjects = response.data || [];
|
||||
for(var i in partialProjects) {
|
||||
vm.projects.push(partialProjects[i]);
|
||||
}
|
||||
|
||||
var nextLink = parseNextLink(response.headers("Link") || '');
|
||||
|
||||
if(nextLink) {
|
||||
vm.page = parseInt(nextLink.page);
|
||||
} else {
|
||||
|
||||
if(vm.projects.length == 0 && vm.isPublic === 0){
|
||||
$window.location.href = '/project';
|
||||
}
|
||||
@ -87,8 +122,9 @@
|
||||
vm.resultCount = $filter('name')(vm.projects, vm.filterInput, 'name').length;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getProjectFailed(data) {
|
||||
function getProjectFailed(response) {
|
||||
$scope.$emit('modalTitle', $filter('tr')('error'));
|
||||
$scope.$emit('modalMessage', $filter('tr')('failed_to_get_project'));
|
||||
$scope.$emit('raiseError', true);
|
||||
|
@ -27,15 +27,13 @@
|
||||
|
||||
function ListProject(projectName, isPublic, page, pageSize) {
|
||||
$log.info('list project projectName:' + projectName, ', isPublic:' + isPublic);
|
||||
var urlParams = '';
|
||||
if(angular.isDefined(page, pageSize)) {
|
||||
urlParams = '?page=' + page + '&page_size=' + pageSize;
|
||||
}
|
||||
return $http
|
||||
.get('/api/projects' + urlParams, {
|
||||
.get('/api/projects', {
|
||||
'params' : {
|
||||
'is_public': isPublic,
|
||||
'project_name': projectName
|
||||
'project_name': projectName,
|
||||
'page': page,
|
||||
'page_size': pageSize
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
||||
<td colspan="5" height="320px" class="empty-hint" ng-if="vm.projects.length === 0"><h4 class="text-muted">// 'no_projects_add_new_project' | tr //</h4></td>
|
||||
</tr>
|
||||
<tr ng-if="vm.projects.length > 0" ng-repeat="p in vm.projects">
|
||||
<td width="20%"><a href="/repository#/repositories?page=//vm.page//&page_size=//vm.pageSize//&project_id=//p.project_id//&is_public=//p.public//">//p.name//</a></td>
|
||||
<td width="20%"><a href="/repository#/repositories?project_id=//p.project_id//&is_public=//vm.isPublic//">//p.name//</a></td>
|
||||
<td width="15%">//p.repo_count//</td>
|
||||
<td width="15%" ng-if="vm.isPublic === 0">//vm.getProjectRole(p.current_user_role_id) | tr//</td>
|
||||
<td width="20%">//p.creation_time | dateL : 'YYYY-MM-DD HH:mm:ss'//</td>
|
||||
|
Loading…
Reference in New Issue
Block a user