You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/07/09 09:29:07 UTC

svn commit: r1358945 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js: archiva/main.js archiva/search.js templates/archiva/search.html

Author: olamy
Date: Mon Jul  9 07:29:07 2012
New Revision: 1358945

URL: http://svn.apache.org/viewvc?rev=1358945&view=rev
Log:
fix search results filtering when coming from autocomplete box

Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/search.html

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js?rev=1358945&r1=1358944&r2=1358945&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js Mon Jul  9 07:29:07 2012
@@ -330,13 +330,13 @@ function() {
       select: function( event, ui ) {
         $.log("select artifactId:"+ui.item.artifactId);
         // user can be in a non search view so init the search view first
+        var searchViewModel = new SearchViewModel();
+        var searchRequest = new SearchRequest();
+        searchRequest.artifactId(ui.item.artifactId);
+        searchViewModel.searchRequest(searchRequest);
         displaySearch(function(){
-          var searchViewModel = new SearchViewModel();
-          var searchRequest = new SearchRequest();
-          searchRequest.artifactId(ui.item.artifactId);
-          searchViewModel.searchRequest(searchRequest);
           searchViewModel.externalAdvancedSearch();
-        });
+        },searchViewModel);
       }
 		}).data( "autocomplete" )._renderItem = function( ul, item ) {
 							return $( "<li></li>" )

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js?rev=1358945&r1=1358944&r2=1358945&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js Mon Jul  9 07:29:07 2012
@@ -1272,6 +1272,10 @@ define("search",["jquery","i18n","jquery
     });
   }
 
+  /**
+   * search results view model: display a grid with autocomplete filtering on grid headers
+   * @param artifacts
+   */
   ResultViewModel=function(artifacts){
     var self=this;
     this.originalArtifacts=artifacts;
@@ -1339,6 +1343,9 @@ define("search",["jquery","i18n","jquery
     });
   }
 
+  /**
+   * View model used for search response and filtering
+   */
   SearchViewModel=function(){
     var self=this;
     this.searchRequest=ko.observable(new SearchRequest());
@@ -1371,6 +1378,7 @@ define("search",["jquery","i18n","jquery
       self.search("restServices/archivaServices/searchService/searchArtifacts");
     }
     removeFilter=function(){
+      $.log("removeFilter:"+self.resultViewModel.originalArtifacts.length);
       self.resultViewModel.artifacts(self.resultViewModel.originalArtifacts);
     }
     this.search=function(url){
@@ -1382,7 +1390,6 @@ define("search",["jquery","i18n","jquery
       mainContent.find("#btn-advanced-search" ).button("loading");
       $("#user-messages").html(mediumSpinnerImg());
 
-
       self.selectedRepoIds=[];
       mainContent.find("#search-basic-repositories" )
           .find(".chzn-choices li span").each(function(i,span){
@@ -1400,19 +1407,21 @@ define("search",["jquery","i18n","jquery
           success: function(data) {
             clearUserMessages();
             var artifacts=mapArtifacts(data);
+            $.log("search#ajax call success:artifacts.length:"+artifacts.length);
             if (artifacts.length<1){
               displayWarningMessage( $.i18n.prop("search.artifact.noresults"));
               return;
             } else {
               self.resultViewModel.originalArtifacts=artifacts;
+              $.log("search#ajax call success:self.resultViewModel.originalArtifacts:"+self.resultViewModel.originalArtifacts.length);
               self.resultViewModel.artifacts(artifacts);
               if (!searchResultsGrid.attr("data-bind")){
+                $.log('!searchResultsGrid.attr("data-bind")');
                 searchResultsGrid.attr("data-bind",
                                  "simpleGrid: gridViewModel,simpleGridTemplate:'search-results-view-grid-tmpl',pageLinksId:'search-results-view-grid-pagination'");
                 ko.applyBindings(self.resultViewModel,searchResultsGrid.get(0));
                 ko.applyBindings(self,mainContent.find("#remove-filter-id" ).get(0));
-                mainContent.find("#search-result-number-div").attr("data-bind",
-                  "template:{name:'search-result-number-div-tmpl'}");
+                mainContent.find("#search-result-number-div").attr("data-bind","template:{name:'search-result-number-div-tmpl'}");
                 ko.applyBindings(self,mainContent.find("#search-result-number-div" ).get(0));
               }
 
@@ -1444,7 +1453,13 @@ define("search",["jquery","i18n","jquery
 
   }
 
-  displaySearch=function(successCallbackFn){
+  /**
+   * display a search result (collection of Artifacts) in a grid
+   * see template with id #search-artifacts-div-tmpl
+   * @param successCallbackFn can be a callback function called on success getting observable repositories.
+   * @param searchViewModelCurrent model to reuse if not null whereas a new one is created.
+   */
+  displaySearch=function(successCallbackFn,searchViewModelCurrent){
     clearUserMessages();
     var mainContent=$("#main-content");
     mainContent.html(mediumSpinnerImg());
@@ -1453,7 +1468,14 @@ define("search",["jquery","i18n","jquery
         dataType: 'json',
         success: function(data) {
           mainContent.html($("#search-artifacts-div-tmpl" ).tmpl());
-          var searchViewModel=new SearchViewModel();
+          var searchViewModel;
+          if (searchViewModelCurrent){
+            $.log("searchViewModelCurrent not null");
+            searchViewModel=searchViewModelCurrent
+          }else {
+            $.log("searchViewModelCurrent null");
+            searchViewModel=new SearchViewModel();
+          }
           var repos=mapStringList(data);
           $.log("repos:"+repos);
           searchViewModel.observableRepoIds(repos);

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/search.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/search.html?rev=1358945&r1=1358944&r2=1358945&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/search.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/search.html Mon Jul  9 07:29:07 2012
@@ -170,8 +170,7 @@
   </div>
 </script>
 <script id="search-artifacts-div-tmpl" type="text/html">
-    <div id="search-artifacts-div" data-bind='template:{name:"search-artifacts-form-tmpl"}'>
-    </div>
+  <div id="search-artifacts-div" data-bind='template:{name:"search-artifacts-form-tmpl"}'></div>
 </script>
 
 <script id="search-artifacts-form-tmpl" type="text/html">
@@ -349,6 +348,7 @@
         <table class="table table-striped table-bordered" id="search-results-grid">
         </table>
         <div id="search-results-view-grid-pagination"></div>
+
       </div>
 
       </div>