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/02/29 19:51:24 UTC

svn commit: r1295209 - in /archiva/trunk/archiva-modules/archiva-web: archiva-webapp-js/src/main/webapp/js/archiva/search.js archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html archiva-webapp-js/src/main/webapp/js/archiva/utils.js pom.xml

Author: olamy
Date: Wed Feb 29 18:51:23 2012
New Revision: 1295209

URL: http://svn.apache.org/viewvc?rev=1295209&view=rev
Log:
add autocomplete to apply filtering on search results

Modified:
    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/archiva/templates/search.html
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/utils.js
    archiva/trunk/archiva-modules/archiva-web/pom.xml

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=1295209&r1=1295208&r2=1295209&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 Wed Feb 29 18:51:23 2012
@@ -703,6 +703,7 @@ $(function() {
 
       var searchResultsGrid=mainContent.find("#search-results #search-results-grid" );
       mainContent.find("#btn-basic-search" ).button("loading");
+      mainContent.find("#btn-advanced-search" ).button("loading");
       $("#user-messages").html(mediumSpinnerImg());
 
 
@@ -733,8 +734,50 @@ $(function() {
                                  "simpleGrid: gridViewModel,simpleGridTemplate:'search-results-view-grid-tmpl',pageLinksId:'search-results-view-grid-pagination'");
                 ko.applyBindings(self.resultViewModel,searchResultsGrid.get(0));
               }
+              // FIXME something generic here !
+
+              $( "#main-content #search-filter-auto-groupId" ).autocomplete({
+                minLength: 1,
+          			source: function(request, response){
+                  var groupIds=[];
+                  $(self.resultViewModel.artifacts()).each(function(idx,artifact){
+                    if(artifact.groupId.startsWith(request.term)){
+                      groupIds.push(artifact.groupId);
+                    }
+                  });
+                  response(unifyArray(groupIds,true));
+                }
+              });
+
+              $( "#main-content #search-filter-auto-artifactId" ).autocomplete({
+                minLength: 1,
+          			source: function(request, response){
+                  var artifactIds=[];
+                  $(self.resultViewModel.artifacts()).each(function(idx,artifact){
+                    if(artifact.artifactId.startsWith(request.term)){
+                      artifactIds.push(artifact.artifactId);
+                    }
+                  });
+                  response(unifyArray(artifactIds,true));
+                }
+              });
+
+              $( "#main-content #search-filter-auto-version" ).autocomplete({
+                minLength: 1,
+          			source: function(request, response){
+                  var versions=[];
+                  $(self.resultViewModel.artifacts()).each(function(idx,artifact){
+                    if(artifact.version.startsWith(request.term)){
+                      versions.push(artifact.version);
+                    }
+                  });
+                  response(unifyArray(versions,true));
+                }
+              });
+
+
+
               activateSearchResultsTab();
-              mainContent.find("#btn-advanced-search-filter" ).show();
             }
           },
           error: function(data) {
@@ -742,13 +785,15 @@ $(function() {
             displayRestError(res);
           },
           complete:function() {
-            $("#main-content #btn-basic-search" ).button("reset");
+            mainContent.find("##btn-basic-search" ).button("reset");
+            mainContent.find("#btn-advanced-search" ).button("reset");
             removeMediumSpinnerImg("#user-messages");
           }
         }
       );
     }
 
+    // olamy not used as we cannot filter on className etc...
     filterResults=function(){
       var filtered=[];
       for (var i=0;i<self.resultViewModel.artifacts().length;i++){

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html?rev=1295209&r1=1295208&r2=1295209&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html Wed Feb 29 18:51:23 2012
@@ -256,9 +256,6 @@
                   <button type="submit" id="btn-advanced-search" class="btn btn-primary"
                           data-bind="click: advancedSearch">${$.i18n.prop('search.artifact.search.form.btn.search')}</button>
 
-                  <button type="submit" id="btn-advanced-search-filter" class="btn btn-success hide"
-                          data-bind="click: filterResults">${$.i18n.prop('search.artifact.search.form.btn.search.filter')}</button>
-
                 </form>
             </div>
             <div class="pill-pane" id="search-osgi-form-pane">
@@ -290,7 +287,9 @@
         </tr>
         <tr>
           {{each(i, columnDefinition) columns}}
-            <th title="${ columnDefinition.title }" id="search-filter-auto-${ columnDefinition.id }"><input type="text" place-holder="filter"/></th>
+            <th title="${ columnDefinition.title }">
+              <input type="text" class="form-search" id="search-filter-auto-${ columnDefinition.id }" place-holder="filtering"/>
+            </th>
           {{/each}}
         </tr>
     </thead>

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/utils.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/utils.js?rev=1295209&r1=1295208&r2=1295209&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/utils.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/utils.js Wed Feb 29 18:51:23 2012
@@ -329,6 +329,21 @@ mapStringList=function(data){
   return [];
 }
 
+/**
+ * return an array with removing duplicate strings
+ * @param strArray an array of string
+ * @param sorted to sort or not
+ */
+unifyArray=function(strArray,sorted){
+  var res = [];
+  $(strArray).each(function(idx,str){
+    if ( $.inArray(str,res)<0){
+      res.push(str);
+    }
+  });
+  return sorted?res.sort():res;
+}
+
 // utils
 String.prototype.endsWith = function(str) {
   return (this.match(str+"$")==str)

Modified: archiva/trunk/archiva-modules/archiva-web/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/pom.xml?rev=1295209&r1=1295208&r2=1295209&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/pom.xml Wed Feb 29 18:51:23 2012
@@ -133,4 +133,5 @@
       </modules>
     </profile>
   </profiles>
+
 </project>