From 55d1b075f37db7970b2bbaf46078a1c8201c9fea Mon Sep 17 00:00:00 2001 From: xiahaoshawn Date: Thu, 26 May 2016 12:29:49 +0800 Subject: [PATCH 1/5] add project and repo statistics data to dashboad --- controllers/ng/dashboard.go | 27 ++++++++++++++ .../layout/dashboard/dashboard.controller.js | 8 ++--- .../services/project/services.stat-project.js | 35 +++++-------------- views/ng/dashboard.htm | 19 ++++++---- 4 files changed, 53 insertions(+), 36 deletions(-) diff --git a/controllers/ng/dashboard.go b/controllers/ng/dashboard.go index 9fa0a64..c0398a8 100644 --- a/controllers/ng/dashboard.go +++ b/controllers/ng/dashboard.go @@ -1,5 +1,13 @@ package ng +import ( + "net/http" + + "github.com/vmware/harbor/dao" + "github.com/vmware/harbor/models" + "github.com/vmware/harbor/utils/log" +) + // DashboardController handles requests to /ng/dashboard type DashboardController struct { BaseController @@ -7,5 +15,24 @@ type DashboardController struct { // Get renders the dashboard page func (dc *DashboardController) Get() { + sessionUserID := dc.GetSession("userId") + var isAdmin int + + if sessionUserID != nil { + userID := sessionUserID.(int) + u, err := dao.GetUser(models.User{UserID: userID}) + if err != nil { + log.Errorf("Error occurred in GetUser, error: %v", err) + dc.CustomAbort(http.StatusInternalServerError, "Internal error.") + } + if u == nil { + log.Warningf("User was deleted already, user id: %d, canceling request.", userID) + dc.CustomAbort(http.StatusUnauthorized, "") + } + isAdmin = u.HasAdminRole + } + + dc.Data["IsAdmin"] = isAdmin + dc.Forward("Dashboard", "dashboard.htm") } diff --git a/static/ng/resources/js/layout/dashboard/dashboard.controller.js b/static/ng/resources/js/layout/dashboard/dashboard.controller.js index 140e220..5b463dd 100644 --- a/static/ng/resources/js/layout/dashboard/dashboard.controller.js +++ b/static/ng/resources/js/layout/dashboard/dashboard.controller.js @@ -20,12 +20,12 @@ ListIntegratedLogService() .then(listIntegratedLogSuccess, listIntegratedLogFailed); - function statProjectSuccess(data) { - vm.statProjects = data; + function statProjectSuccess(response) { + vm.statProjects = response.data; } - function statProjectFailed(data) { - console.log('Failed stat project:' + data); + function statProjectFailed(response) { + console.log('Failed stat project:' + response.data); } function listTop10RepositorySuccess(data) { diff --git a/static/ng/resources/js/services/project/services.stat-project.js b/static/ng/resources/js/services/project/services.stat-project.js index 52fac98..fd398bc 100644 --- a/static/ng/resources/js/services/project/services.stat-project.js +++ b/static/ng/resources/js/services/project/services.stat-project.js @@ -6,35 +6,18 @@ .module('harbor.services.project') .factory('StatProjectService', StatProjectService); - StatProjectService.$inject = ['$http', '$q', '$timeout']; + StatProjectService.$inject = ['$http', '$log']; - function StatProjectService($http, $q, $timeout) { + function StatProjectService($http, $log) { + + return StatProject; - var mockData = { - 'projects': 30, - 'public_projects': 50, - 'total_projects': 120, - 'repositories': 50, - 'public_repositories': 40, - 'total_repositories': 110 - }; - - function async() { - var deferred = $q.defer(); - - $timeout(function() { - deferred.resolve(mockData); - }, 500); - - return deferred.promise; + function StatProject() { + $log.info('statistics projects and repositories'); + return $http + .get('/api/statistics'); } - - return statProject; - - function statProject() { - return async(); - } - + } })(); \ No newline at end of file diff --git a/views/ng/dashboard.htm b/views/ng/dashboard.htm index 9b1a872..58f61e2 100644 --- a/views/ng/dashboard.htm +++ b/views/ng/dashboard.htm @@ -6,12 +6,19 @@
-
// 'projects' | tr //:
//vm.statProjects['projects']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_projects']//
-
// 'total_projects' | tr //:
//vm.statProjects['total_projects']//
-
// 'repositories' | tr //:
//vm.statProjects['repositories']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repositories']//
-
// 'total_repositories' | tr //:
//vm.statProjects['total_repositories']//
+ {{ if eq .IsAdmin 1 }} +
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'total_projects' | tr //:
//vm.statProjects['total_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+
// 'total_repositories' | tr //:
//vm.statProjects['total_repo_count']//
+ {{ else }} +
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+ {{ end }}
From f6e9827ed4975a18d3e18a33497fc2a31a379428 Mon Sep 17 00:00:00 2001 From: xiahaoshawn Date: Thu, 26 May 2016 12:31:03 +0800 Subject: [PATCH 2/5] show user role on the project list page --- .../resources/js/layout/project/project.controller.js | 10 ++++++++++ views/ng/project.htm | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/static/ng/resources/js/layout/project/project.controller.js b/static/ng/resources/js/layout/project/project.controller.js index 9a7a016..9395f7d 100644 --- a/static/ng/resources/js/layout/project/project.controller.js +++ b/static/ng/resources/js/layout/project/project.controller.js @@ -11,6 +11,13 @@ function ProjectController($scope, ListProjectService, $timeout, currentUser) { var vm = this; + vm.MAP = { + 0: 'NA', + 1: 'Project Admin', + 2: 'Developer', + 3: 'Guest' + }; + vm.isOpen = false; vm.projectName = ''; vm.publicity = 0; @@ -35,6 +42,9 @@ } function listProjectSuccess(data, status) { + data.forEach(function(data){ + data.role = vm.MAP[data.role_id]; + }); vm.projects = data; } diff --git a/views/ng/project.htm b/views/ng/project.htm index 1b26396..bf39a3d 100644 --- a/views/ng/project.htm +++ b/views/ng/project.htm @@ -32,8 +32,8 @@ //p.Name// - N/A - N/A + //p.count// + //p.role// //p.CreationTime | dateL : 'YYYY-MM-DD HH:mm:ss'// From 575fc90e6184a44f416a6389421a4ad1bfc7c1aa Mon Sep 17 00:00:00 2001 From: xiahaoshawn Date: Thu, 2 Jun 2016 15:44:53 +0800 Subject: [PATCH 3/5] abstracted summary section as a directive --- controllers/ng/dashboard.go | 27 ----------- controllers/ng/signin.go | 2 + .../project-member/project-member.config.js | 3 +- .../components/summary/summary.directive.html | 15 +++++++ .../components/summary/summary.directive.js | 45 +++++++++++++++++++ .../js/components/summary/summary.module.js | 10 +++++ static/ng/resources/js/harbor.module.js | 1 + .../layout/dashboard/dashboard.controller.js | 19 ++------ .../js/layout/dashboard/dashboard.module.js | 1 - .../js/layout/project/project.controller.js | 14 ++---- .../js/layout/project/project.module.js | 1 + views/ng/dashboard.htm | 17 +------ views/ng/project.htm | 4 +- views/ng/sections/header-include.htm | 3 ++ 14 files changed, 90 insertions(+), 72 deletions(-) create mode 100644 static/ng/resources/js/components/summary/summary.directive.html create mode 100644 static/ng/resources/js/components/summary/summary.directive.js create mode 100644 static/ng/resources/js/components/summary/summary.module.js diff --git a/controllers/ng/dashboard.go b/controllers/ng/dashboard.go index c0398a8..9fa0a64 100644 --- a/controllers/ng/dashboard.go +++ b/controllers/ng/dashboard.go @@ -1,13 +1,5 @@ package ng -import ( - "net/http" - - "github.com/vmware/harbor/dao" - "github.com/vmware/harbor/models" - "github.com/vmware/harbor/utils/log" -) - // DashboardController handles requests to /ng/dashboard type DashboardController struct { BaseController @@ -15,24 +7,5 @@ type DashboardController struct { // Get renders the dashboard page func (dc *DashboardController) Get() { - sessionUserID := dc.GetSession("userId") - var isAdmin int - - if sessionUserID != nil { - userID := sessionUserID.(int) - u, err := dao.GetUser(models.User{UserID: userID}) - if err != nil { - log.Errorf("Error occurred in GetUser, error: %v", err) - dc.CustomAbort(http.StatusInternalServerError, "Internal error.") - } - if u == nil { - log.Warningf("User was deleted already, user id: %d, canceling request.", userID) - dc.CustomAbort(http.StatusUnauthorized, "") - } - isAdmin = u.HasAdminRole - } - - dc.Data["IsAdmin"] = isAdmin - dc.Forward("Dashboard", "dashboard.htm") } diff --git a/controllers/ng/signin.go b/controllers/ng/signin.go index 1d7fb85..7e83aa2 100644 --- a/controllers/ng/signin.go +++ b/controllers/ng/signin.go @@ -8,10 +8,12 @@ import ( "github.com/vmware/harbor/utils/log" ) +// SignInController handles requests to /ng/sign_in type SignInController struct { BaseController } +//Get renders sign_in page func (sic *SignInController) Get() { sessionUserID := sic.GetSession("userId") var hasLoggedIn bool diff --git a/static/ng/resources/js/components/project-member/project-member.config.js b/static/ng/resources/js/components/project-member/project-member.config.js index 937dbcc..8a12037 100644 --- a/static/ng/resources/js/components/project-member/project-member.config.js +++ b/static/ng/resources/js/components/project-member/project-member.config.js @@ -9,6 +9,7 @@ function roles() { return [ + {'id': '0', 'name': 'NA', 'roleName': 'NA'}, {'id': '1', 'name': 'Project Admin', 'roleName': 'projectAdmin'}, {'id': '2', 'name': 'Developer', 'roleName': 'developer'}, {'id': '3', 'name': 'Guest', 'roleName': 'guest'} @@ -25,7 +26,7 @@ for(var i = 0; i < r.length; i++) { var role = r[i]; if(query.key === 'roleName' && role.roleName === query.value - || query.key === 'roleId' && role.id === query.value) { + || query.key === 'roleId' && role.id === String(query.value)) { return role; } } diff --git a/static/ng/resources/js/components/summary/summary.directive.html b/static/ng/resources/js/components/summary/summary.directive.html new file mode 100644 index 0000000..7ee01d5 --- /dev/null +++ b/static/ng/resources/js/components/summary/summary.directive.html @@ -0,0 +1,15 @@ + +
+
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'total_projects' | tr //:
//vm.statProjects['total_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+
// 'total_repositories' | tr //:
//vm.statProjects['total_repo_count']//
+
+
+
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+
\ No newline at end of file diff --git a/static/ng/resources/js/components/summary/summary.directive.js b/static/ng/resources/js/components/summary/summary.directive.js new file mode 100644 index 0000000..3bc70fb --- /dev/null +++ b/static/ng/resources/js/components/summary/summary.directive.js @@ -0,0 +1,45 @@ +(function() { + + 'use strict'; + + angular + .module('harbor.summary') + .directive('projectSummary', projectSummary); + + ProjectSummaryController.$inject = ['StatProjectService']; + + function ProjectSummaryController(StatProjectService) { + var vm = this; + + StatProjectService() + .success(statProjectSuccess) + .error(statProjectFailed); + + function statProjectSuccess(data, status) { + vm.statProjects = data; + if(vm.statProjects.hasOwnProperty("total_project_count")) { + vm.isAdmin = true; + }else { + vm.isAdmin = false; + } + } + + function statProjectFailed(status) { + console.log('Failed stat project:' + status); + } + } + + function projectSummary() { + var directive = { + 'restrict': 'E', + 'templateUrl': '/static/ng/resources/js/components/summary/summary.directive.html', + 'controller': ProjectSummaryController, + 'scope' : true, + 'controllerAs': 'vm', + 'bindToController': true + }; + + return directive; + } + +})(); \ No newline at end of file diff --git a/static/ng/resources/js/components/summary/summary.module.js b/static/ng/resources/js/components/summary/summary.module.js new file mode 100644 index 0000000..29340b0 --- /dev/null +++ b/static/ng/resources/js/components/summary/summary.module.js @@ -0,0 +1,10 @@ +(function() { + + 'use strict'; + + angular + .module('harbor.summary', [ + 'harbor.services.project' + ]); + +})(); \ No newline at end of file diff --git a/static/ng/resources/js/harbor.module.js b/static/ng/resources/js/harbor.module.js index 0a18b1d..4476d91 100644 --- a/static/ng/resources/js/harbor.module.js +++ b/static/ng/resources/js/harbor.module.js @@ -27,6 +27,7 @@ 'harbor.services.user', 'harbor.services.repository', 'harbor.services.project.member', + 'harbor.summary', 'harbor.optional.menu', 'harbor.modal.dialog', 'harbor.sign.in', diff --git a/static/ng/resources/js/layout/dashboard/dashboard.controller.js b/static/ng/resources/js/layout/dashboard/dashboard.controller.js index 5b463dd..bd2f8b6 100644 --- a/static/ng/resources/js/layout/dashboard/dashboard.controller.js +++ b/static/ng/resources/js/layout/dashboard/dashboard.controller.js @@ -6,28 +6,17 @@ .module('harbor.layout.dashboard') .controller('DashboardController', DashboardController); - DashboardController.$inject = ['StatProjectService', 'ListTop10RepositoryService', 'ListIntegratedLogService']; + DashboardController.$inject = ['ListTop10RepositoryService', 'ListIntegratedLogService']; - function DashboardController(StatProjectService, ListTop10RepositoryService, ListIntegratedLogService) { + function DashboardController(ListTop10RepositoryService, ListIntegratedLogService) { var vm = this; - - StatProjectService() - .then(statProjectSuccess, statProjectFailed); - + ListTop10RepositoryService() .then(listTop10RepositorySuccess, listTop10RepositoryFailed); ListIntegratedLogService() .then(listIntegratedLogSuccess, listIntegratedLogFailed); - - function statProjectSuccess(response) { - vm.statProjects = response.data; - } - - function statProjectFailed(response) { - console.log('Failed stat project:' + response.data); - } - + function listTop10RepositorySuccess(data) { vm.top10Repositories = data; } diff --git a/static/ng/resources/js/layout/dashboard/dashboard.module.js b/static/ng/resources/js/layout/dashboard/dashboard.module.js index f061feb..cc45227 100644 --- a/static/ng/resources/js/layout/dashboard/dashboard.module.js +++ b/static/ng/resources/js/layout/dashboard/dashboard.module.js @@ -4,7 +4,6 @@ angular .module('harbor.layout.dashboard', [ - 'harbor.services.project', 'harbor.services.repository', 'harbor.services.log' ]); diff --git a/static/ng/resources/js/layout/project/project.controller.js b/static/ng/resources/js/layout/project/project.controller.js index 44a52ce..8eca937 100644 --- a/static/ng/resources/js/layout/project/project.controller.js +++ b/static/ng/resources/js/layout/project/project.controller.js @@ -6,18 +6,11 @@ .module('harbor.layout.project') .controller('ProjectController', ProjectController); - ProjectController.$inject = ['$scope', 'ListProjectService', '$timeout', 'currentUser']; + ProjectController.$inject = ['$scope', 'ListProjectService', '$timeout', 'currentUser', 'getRole']; - function ProjectController($scope, ListProjectService, $timeout, currentUser) { + function ProjectController($scope, ListProjectService, $timeout, currentUser, getRole) { var vm = this; - vm.MAP = { - 0: 'NA', - 1: 'Project Admin', - 2: 'Developer', - 3: 'Guest' - }; - vm.isOpen = false; vm.projectName = ''; vm.publicity = 0; @@ -39,7 +32,8 @@ function listProjectSuccess(data, status) { data.forEach(function(data){ - data.role = vm.MAP[data.role_id]; + var currentRole = getRole({'key': 'roleId', 'value': data.role_id}); + data.role_name = currentRole.name; }); vm.projects = data || []; diff --git a/static/ng/resources/js/layout/project/project.module.js b/static/ng/resources/js/layout/project/project.module.js index ae2d88a..9133726 100644 --- a/static/ng/resources/js/layout/project/project.module.js +++ b/static/ng/resources/js/layout/project/project.module.js @@ -4,6 +4,7 @@ angular .module('harbor.layout.project', [ + 'harbor.project.member', 'harbor.services.project', 'harbor.services.user' ]); diff --git a/views/ng/dashboard.htm b/views/ng/dashboard.htm index 58f61e2..5616ea4 100644 --- a/views/ng/dashboard.htm +++ b/views/ng/dashboard.htm @@ -4,22 +4,7 @@
- -
- {{ if eq .IsAdmin 1 }} -
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
-
// 'total_projects' | tr //:
//vm.statProjects['total_project_count']//
-
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
-
// 'total_repositories' | tr //:
//vm.statProjects['total_repo_count']//
- {{ else }} -
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
-
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
- {{ end }} -
+
diff --git a/views/ng/project.htm b/views/ng/project.htm index 6718391..b4eb38f 100644 --- a/views/ng/project.htm +++ b/views/ng/project.htm @@ -35,8 +35,8 @@ //p.Name// - //p.count// - //p.role// + //p.repo_count// + //p.role_name// //p.CreationTime | dateL : 'YYYY-MM-DD HH:mm:ss'// diff --git a/views/ng/sections/header-include.htm b/views/ng/sections/header-include.htm index 8f65b83..4cbb145 100644 --- a/views/ng/sections/header-include.htm +++ b/views/ng/sections/header-include.htm @@ -197,3 +197,6 @@ + + + From 21f0633d6dac02c87787f1822c3929e1ec4b088b Mon Sep 17 00:00:00 2001 From: xiahaoshawn Date: Mon, 6 Jun 2016 15:39:17 +0800 Subject: [PATCH 4/5] change as Kun's comments --- .../js/components/summary/summary.config.js | 37 +++++++++++++++++++ .../components/summary/summary.directive.html | 15 +------- .../components/summary/summary.directive.js | 17 +++++---- .../js/layout/project/project.controller.js | 12 +++--- .../js/services/i18n/locale_messages_en-US.js | 1 - .../js/services/i18n/locale_messages_zh-CN.js | 1 - views/ng/project.htm | 2 +- views/ng/sections/header-include.htm | 1 + 8 files changed, 56 insertions(+), 30 deletions(-) create mode 100644 static/ng/resources/js/components/summary/summary.config.js diff --git a/static/ng/resources/js/components/summary/summary.config.js b/static/ng/resources/js/components/summary/summary.config.js new file mode 100644 index 0000000..86be426 --- /dev/null +++ b/static/ng/resources/js/components/summary/summary.config.js @@ -0,0 +1,37 @@ +(function() { + + 'use strict'; + + angular + .module('harbor.summary') + .constant('projectStatistics', projectStatistics) + .factory('getStatisticsName', getStatisticsName); + + function projectStatistics() { + return [ + {'name': 'projects', 'payloadName': 'my_project_count'}, + {'name': 'repositories', 'payloadName': 'my_repo_count'}, + {'name': 'public_projects', 'payloadName': 'public_project_count'}, + {'name': 'public_repositories', 'payloadName': 'public_repo_count'}, + {'name': 'total_projects', 'payloadName': 'total_project_count'}, + {'name': 'total_repositories', 'payloadName': 'total_repo_count'}, + ]; + } + + getStatisticsName.$inject = ['projectStatistics']; + + function getStatisticsName(projectStatistics) { + var r = projectStatistics(); + return get; + function get(query) { + + for(var i = 0; i < r.length; i++) { + var StatisticsName = r[i]; + if(query.key === 'payloadName' && StatisticsName.payloadName === query.value + || query.key === 'name' && StatisticsName.name === query.value) { + return StatisticsName; + } + } + } + } +})(); \ No newline at end of file diff --git a/static/ng/resources/js/components/summary/summary.directive.html b/static/ng/resources/js/components/summary/summary.directive.html index 7ee01d5..3146514 100644 --- a/static/ng/resources/js/components/summary/summary.directive.html +++ b/static/ng/resources/js/components/summary/summary.directive.html @@ -1,15 +1,4 @@ -
-
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
-
// 'total_projects' | tr //:
//vm.statProjects['total_project_count']//
-
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
-
// 'total_repositories' | tr //:
//vm.statProjects['total_repo_count']//
+
+
// vm.getSummaryName(key) | tr //:
//value//
-
-
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
-
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
-
\ No newline at end of file diff --git a/static/ng/resources/js/components/summary/summary.directive.js b/static/ng/resources/js/components/summary/summary.directive.js index 3bc70fb..f220530 100644 --- a/static/ng/resources/js/components/summary/summary.directive.js +++ b/static/ng/resources/js/components/summary/summary.directive.js @@ -6,10 +6,11 @@ .module('harbor.summary') .directive('projectSummary', projectSummary); - ProjectSummaryController.$inject = ['StatProjectService']; + ProjectSummaryController.$inject = ['StatProjectService', 'getStatisticsName']; - function ProjectSummaryController(StatProjectService) { + function ProjectSummaryController(StatProjectService, getStatisticsName) { var vm = this; + vm.getSummaryName = getSummaryName; StatProjectService() .success(statProjectSuccess) @@ -17,16 +18,16 @@ function statProjectSuccess(data, status) { vm.statProjects = data; - if(vm.statProjects.hasOwnProperty("total_project_count")) { - vm.isAdmin = true; - }else { - vm.isAdmin = false; - } } function statProjectFailed(status) { console.log('Failed stat project:' + status); - } + } + + function getSummaryName(payloadName) { + var statisticsName = getStatisticsName({'key': 'payloadName', 'value': payloadName}); + return statisticsName.name; + } } function projectSummary() { diff --git a/static/ng/resources/js/layout/project/project.controller.js b/static/ng/resources/js/layout/project/project.controller.js index 8eca937..095b6eb 100644 --- a/static/ng/resources/js/layout/project/project.controller.js +++ b/static/ng/resources/js/layout/project/project.controller.js @@ -22,6 +22,7 @@ vm.togglePublicity = togglePublicity; vm.user = currentUser.get(); vm.retrieve(); + vm.getProjectRole = getProjectRole; function retrieve() { @@ -31,13 +32,12 @@ } function listProjectSuccess(data, status) { - data.forEach(function(data){ - var currentRole = getRole({'key': 'roleId', 'value': data.role_id}); - data.role_name = currentRole.name; - }); - vm.projects = data || []; - + } + + function getProjectRole(roleId) { + var role = getRole({'key': 'roleId', 'value': roleId}); + return role.name; } function listProjectFailed(e) { diff --git a/static/ng/resources/js/services/i18n/locale_messages_en-US.js b/static/ng/resources/js/services/i18n/locale_messages_en-US.js index b3f8b43..9609fc1 100644 --- a/static/ng/resources/js/services/i18n/locale_messages_en-US.js +++ b/static/ng/resources/js/services/i18n/locale_messages_en-US.js @@ -45,7 +45,6 @@ var locale_messages = { 'comments': 'Comments', 'comment_is_too_long': 'Comment is too long. (maximum 20 characters)', 'forgot_password_description': 'Please input the Email used when you signed up, a reset password Email will be sent to you.', - 'email_does_not_exist': 'Email does not exist', 'reset_password': 'Reset Password', 'summary': 'Summary', 'projects': 'Projects', diff --git a/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js b/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js index ca0d326..a319a49 100644 --- a/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js +++ b/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js @@ -45,7 +45,6 @@ var locale_messages = { 'comments': '备注', 'comment_is_too_long' : '备注长度超出限制。(最长为20个字符)', 'forgot_password_description': '重置邮件将发送到此邮箱。', - 'email_does_not_exist': '邮箱不存在。', 'reset_password': '重置密码', 'summary': '摘要', 'projects': '项目', diff --git a/views/ng/project.htm b/views/ng/project.htm index b4eb38f..4d6b82f 100644 --- a/views/ng/project.htm +++ b/views/ng/project.htm @@ -36,7 +36,7 @@ //p.Name// //p.repo_count// - //p.role_name// + //vm.getProjectRole(p.role_id)// //p.CreationTime | dateL : 'YYYY-MM-DD HH:mm:ss'// diff --git a/views/ng/sections/header-include.htm b/views/ng/sections/header-include.htm index 4cbb145..7742a3a 100644 --- a/views/ng/sections/header-include.htm +++ b/views/ng/sections/header-include.htm @@ -200,3 +200,4 @@ + From b338af3973f61bd0698e7e5a36a229ff1cdd83c0 Mon Sep 17 00:00:00 2001 From: xiahaoshawn Date: Tue, 7 Jun 2016 11:56:10 +0800 Subject: [PATCH 5/5] update local message --- .../js/components/summary/summary.config.js | 37 ------------------- .../components/summary/summary.directive.html | 2 +- .../components/summary/summary.directive.js | 10 +---- .../js/services/i18n/locale_messages_en-US.js | 8 +++- .../js/services/i18n/locale_messages_zh-CN.js | 8 +++- views/ng/sections/header-include.htm | 1 - 6 files changed, 15 insertions(+), 51 deletions(-) delete mode 100644 static/ng/resources/js/components/summary/summary.config.js diff --git a/static/ng/resources/js/components/summary/summary.config.js b/static/ng/resources/js/components/summary/summary.config.js deleted file mode 100644 index 86be426..0000000 --- a/static/ng/resources/js/components/summary/summary.config.js +++ /dev/null @@ -1,37 +0,0 @@ -(function() { - - 'use strict'; - - angular - .module('harbor.summary') - .constant('projectStatistics', projectStatistics) - .factory('getStatisticsName', getStatisticsName); - - function projectStatistics() { - return [ - {'name': 'projects', 'payloadName': 'my_project_count'}, - {'name': 'repositories', 'payloadName': 'my_repo_count'}, - {'name': 'public_projects', 'payloadName': 'public_project_count'}, - {'name': 'public_repositories', 'payloadName': 'public_repo_count'}, - {'name': 'total_projects', 'payloadName': 'total_project_count'}, - {'name': 'total_repositories', 'payloadName': 'total_repo_count'}, - ]; - } - - getStatisticsName.$inject = ['projectStatistics']; - - function getStatisticsName(projectStatistics) { - var r = projectStatistics(); - return get; - function get(query) { - - for(var i = 0; i < r.length; i++) { - var StatisticsName = r[i]; - if(query.key === 'payloadName' && StatisticsName.payloadName === query.value - || query.key === 'name' && StatisticsName.name === query.value) { - return StatisticsName; - } - } - } - } -})(); \ No newline at end of file diff --git a/static/ng/resources/js/components/summary/summary.directive.html b/static/ng/resources/js/components/summary/summary.directive.html index 3146514..188f46a 100644 --- a/static/ng/resources/js/components/summary/summary.directive.html +++ b/static/ng/resources/js/components/summary/summary.directive.html @@ -1,4 +1,4 @@
-
// vm.getSummaryName(key) | tr //:
//value//
+
// key | tr //:
//value//
diff --git a/static/ng/resources/js/components/summary/summary.directive.js b/static/ng/resources/js/components/summary/summary.directive.js index f220530..880f9d2 100644 --- a/static/ng/resources/js/components/summary/summary.directive.js +++ b/static/ng/resources/js/components/summary/summary.directive.js @@ -6,11 +6,10 @@ .module('harbor.summary') .directive('projectSummary', projectSummary); - ProjectSummaryController.$inject = ['StatProjectService', 'getStatisticsName']; + ProjectSummaryController.$inject = ['StatProjectService']; - function ProjectSummaryController(StatProjectService, getStatisticsName) { + function ProjectSummaryController(StatProjectService) { var vm = this; - vm.getSummaryName = getSummaryName; StatProjectService() .success(statProjectSuccess) @@ -23,11 +22,6 @@ function statProjectFailed(status) { console.log('Failed stat project:' + status); } - - function getSummaryName(payloadName) { - var statisticsName = getStatisticsName({'key': 'payloadName', 'value': payloadName}); - return statisticsName.name; - } } function projectSummary() { diff --git a/static/ng/resources/js/services/i18n/locale_messages_en-US.js b/static/ng/resources/js/services/i18n/locale_messages_en-US.js index 9609fc1..4298817 100644 --- a/static/ng/resources/js/services/i18n/locale_messages_en-US.js +++ b/static/ng/resources/js/services/i18n/locale_messages_en-US.js @@ -50,9 +50,13 @@ var locale_messages = { 'projects': 'Projects', 'public_projects': 'Public Projects', 'public': 'Public', - 'total_projects': 'Total Projects', 'public_repositories': 'Public Repositories', - 'total_repositories': 'Total Repositories', + 'my_project_count': 'Projects', + 'my_repo_count': 'Repositories', + 'public_project_count': 'Public Projects', + 'public_repo_count': 'Public Repositories', + 'total_project_count': 'Total Projects', + 'total_repo_count': 'Total Repositories', 'top_10_repositories': 'Top 10 Repositories', 'repository_name': 'Repository Name', 'size': 'Size', diff --git a/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js b/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js index a319a49..babfb8b 100644 --- a/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js +++ b/static/ng/resources/js/services/i18n/locale_messages_zh-CN.js @@ -50,9 +50,13 @@ var locale_messages = { 'projects': '项目', 'public_projects': '公开项目', 'public': '公开', - 'total_projects': '全部项目', 'public_repositories': '公开镜像仓库', - 'total_repositories': '全部镜像仓库', + 'my_project_count': '项目', + 'my_repo_count': '镜像仓库', + 'public_project_count': '公开项目', + 'public_repo_count': '公开镜像仓库', + 'total_project_count': '全部项目', + 'total_repo_count': '全部镜像仓库', 'top_10_repositories': 'Top 10 镜像仓库', 'repository_name': '镜像仓库名', 'size': '规格', diff --git a/views/ng/sections/header-include.htm b/views/ng/sections/header-include.htm index 7742a3a..4cbb145 100644 --- a/views/ng/sections/header-include.htm +++ b/views/ng/sections/header-include.htm @@ -200,4 +200,3 @@ -