From e5723ac3d03aac1ad083457068ce408efe4a416d Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 14 Feb 2012 08:20:38 +0000 Subject: [PATCH] [MRM-1575] rewrite repositories group page impl grid with groups git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1243818 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/webapp/index.html | 2 +- .../webapp/js/archiva/proxy-connectors.js | 7 +- .../main/webapp/js/archiva/repositories.js | 9 +++ .../webapp/js/archiva/repository-groups.js | 66 +++++++++++++++++++ .../webapp/js/archiva/templates/menu.html | 3 + .../archiva/templates/repository-groups.html | 47 +++++++++++++ 6 files changed, 127 insertions(+), 7 deletions(-) diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html index 2496ace4a..740d9ea74 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html @@ -86,7 +86,7 @@ $.ajax( .script(buildLoadJsUrl("archiva/network-proxies.js")).wait() .script(buildLoadJsUrl("archiva/proxy-connectors.js")).wait() .script(buildLoadJsUrl("redback/operation.js")).wait() - .script(buildLoadJsUrl("repository-groups.js")).wait() + .script(buildLoadJsUrl("archiva/repository-groups.js")).wait() .script(buildLoadJsUrl("redback/redback-tmpl.js")).wait() .script(buildLoadJsUrl("bootstrap.js")) .script(buildLoadJsUrl("knockout.simpleGrid.js")) diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors.js index f1a26c1c9..1d78c139e 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors.js @@ -328,12 +328,7 @@ $(function() { getManagedRepository=function(id){ - var managedRepository=$.grep(self.managedRepositories(), - function(repo,idx){ - return repo.id()==id; - } - ); - return ($.isArray(managedRepository) && managedRepository.length>0) ? managedRepository[0]:new ManagedRepository(); + return findManagedRepository(id,self.managedRepositories()); } getRemoteRepository=function(id){ diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js index 836cc840b..29ca8f69b 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repositories.js @@ -957,4 +957,13 @@ $(function() { }); } + findManagedRepository=function(id,managedRepositories){ + var managedRepository=$.grep(managedRepositories, + function(repo,idx){ + return repo.id()==id; + } + ); + return ($.isArray(managedRepository) && managedRepository.length>0) ? managedRepository[0]:new ManagedRepository(); + } + }); \ No newline at end of file diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repository-groups.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repository-groups.js index 1486f57d5..fb2bd9f41 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repository-groups.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/repository-groups.js @@ -18,5 +18,71 @@ */ $(function() { + RepositoryGroup=function(id,repositories){ + + var self=this; + + //private String id; + this.id=ko.observable(id); + this.id.subscribe(function(newValue){self.modified(true)}); + + // private List repositories; + this.repositories=ko.observableArray(repositories); + this.repositories.subscribe(function(newValue){self.modified(true)}); + + this.modified=ko.observable(false); + } + + RepositoryGroupViewModel=function(){ + this.repositoryGroups=ko.observableArray([]); + this.managedRepositories=ko.observableArray([]); + + findManagedRepository=function(id){ + return findManagedRepository(id,self.managedRepositories()); + } + } + + displayRepositoryGroups=function(){ + screenChange(); + var mainContent = $("#main-content"); + mainContent.html(mediumSpinnerImg()); + this.repositoryGroupViewModel=new RepositoryGroupViewModel(); + var self=this; + + loadManagedRepositories(function(data) { + self.repositoryGroupViewModel.managedRepositories(mapManagedRepositories(data)); + + $.ajax("restServices/archivaServices/repositoryGroupService/getRepositoriesGroups", { + type: "GET", + dataType: 'json', + success: function(data) { + var mappedRepositoryGroups=mapRepositoryGroups(data); + mainContent.html($("#repositoryGroupsMain").tmpl()); + self.repositoryGroupViewModel.repositoryGroups(mappedRepositoryGroups); + //ko.applyBindings(repositoryGroupViewModel,mainContent.find("#repository-groups-table" ).get(0)); + ko.applyBindings(repositoryGroupViewModel,mainContent.get(0)); + + } + } + ); + + }); + + + } + + mapRepositoryGroups=function(data){ + if (data == null){ + return new Array(); + } + var mappedRepositoryGroups = $.map(data.repositoryGroup, function(item) { + return mapRepositoryGroup(item); + }); + return mappedRepositoryGroups; + } + + mapRepositoryGroup=function(data){ + return new RepositoryGroup(data.id, mapStringArray(data.repositories)); + } }); diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/menu.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/menu.html index 74a26d8f7..c9584125a 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/menu.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/menu.html @@ -30,6 +30,9 @@