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/27 22:20:49 UTC

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

Author: olamy
Date: Mon Feb 27 21:20:49 2012
New Revision: 1294333

URL: http://svn.apache.org/viewvc?rev=1294333&view=rev
Log:
start autocomplete box on browsing

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

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=1294333&r1=1294332&r2=1294333&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 Feb 27 21:20:49 2012
@@ -156,19 +156,6 @@ $(function() {
     });
   }
 
-  // handle url with registration link
-  $(document).ready(function() {
-    var validateMeId = $.urlParam('validateMe');
-    if (validateMeId) {
-      validateKey(validateMeId);
-    }
-
-    var browse = $.urlParam('browse');
-    if (browse){
-      displayBrowseGroupId(browse);
-    }
-  });
-
   startArchivaApplication = function(){
     $.log("startArchivaApplication");
     $('#topbar-menu-container').html($("#topbar-menu"));
@@ -206,11 +193,28 @@ $(function() {
 
       }
 		});
-    // by default display search screen
-    displaySearch();
+
 
   }
   startArchivaApplication();
+
+
+  // handle url with registration link
+  $(document).ready(function() {
+    var validateMeId = $.urlParam('validateMe');
+    if (validateMeId) {
+      validateKey(validateMeId);
+      return;
+    }
+
+    var browse = $.urlParam('browse');
+    if (browse){
+      displayBrowseGroupId(browse);
+      return;
+    }
+    // by default display search screen
+    displaySearch();
+  });
 })
 });
 

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=1294333&r1=1294332&r2=1294333&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 Feb 27 21:20:49 2012
@@ -180,6 +180,101 @@ $(function() {
           ko.applyBindings(browseViewModel,mainContent.find("#browse_result").get(0));
         }
     });
+    enableAutocompleBrowse();
+  }
+
+  enableAutocompleBrowse=function(){
+    // browse-autocomplete
+    $( "#main-content #browse-autocomplete" ).autocomplete({
+      minLength: 3,
+			source: function(request, response){
+        var query = "";
+        if (request.term.indexOf('.')<0){
+          // try with rootGroups then filtered
+          $.get("restServices/archivaServices/browseService/rootGroups",
+             function(data) {
+               var browseResultEntries = mapbrowseResultEntries(data);
+               var filetered = [];
+               for(var i=0;i<browseResultEntries.length;i++){
+                 if (browseResultEntries[i].name.startsWith(request.term)){
+                   filetered.push(browseResultEntries[i]);
+                 }
+               }
+               response(filetered);
+
+             }
+          );
+          return;
+        }
+        var dotEnd=request.term.endsWith(".");
+        // org.apache. requets with org.apache
+        // org.apa request with org before last dot and filter response with startsWith
+        if (request.term.indexOf(".")>=0){
+          if (dotEnd){
+            query= request.term.substring(0, request.term.length-1);
+          } else {
+            // substring before last
+            query=request.term.substringBeforeLast(".");
+          }
+        } else {
+          query=request.term;
+        }
+        $.get("restServices/archivaServices/browseService/browseGroupId/"+encodeURIComponent(query),
+           function(data) {
+             var browseResultEntries = mapbrowseResultEntries(data);
+             if (dotEnd){
+              response(browseResultEntries);
+             } else {
+               var filetered = [];
+               for(var i=0;i<browseResultEntries.length;i++){
+                 if (browseResultEntries[i].name.startsWith(request.term)){
+                   filetered.push(browseResultEntries[i]);
+                 }
+               }
+               response(filetered);
+             }
+           }
+        );
+      },
+      select: function( event, ui ) {
+        $.log("ui.item.label:"+ui.item.name);
+        if (ui.item.project=='true'){
+          // value org.apache.maven/maven-archiver
+          // split this org.apache.maven and maven-archiver
+          var id=ui.item.name;
+          var values = id.split(".");
+          var groupId="";
+          for (var i = 0;i<values.length-1;i++){
+            groupId+=values[i];
+            if (i<values.length-2)groupId+=".";
+          }
+          var artifactId=values[values.length-1];
+          displayArtifactDetail(groupId,artifactId,self);
+        } else {
+          displayBrowseGroupIdFromAutoComplete(ui.item.name);
+        }
+        return false;
+      }
+		}).data( "autocomplete" )._renderItem = function( ul, item ) {
+					return $( "<li></li>" )
+						.data( "item.autocomplete", item )
+						.append( "<a>" + item.name + "</a>" )
+						.appendTo( ul );
+				};;
+  }
+
+  /**
+   * called if browser url contains queryParam browse=groupId
+   * @param groupId
+   */
+  displayBrowseGroupIdFromAutoComplete=function(groupId){
+    clearUserMessages();
+    var mainContent = $("#main-content");
+    //mainContent.html($("#browse-tmpl" ).tmpl());
+    mainContent.find("#browse_result").html(mediumSpinnerImg());
+    var parentBrowseViewModel=new BrowseViewModel(null,null,null);
+    displayGroupDetail(groupId,parentBrowseViewModel,null);
+    enableAutocompleBrowse();
   }
 
   /**
@@ -192,7 +287,8 @@ $(function() {
     mainContent.html($("#browse-tmpl" ).tmpl());
     mainContent.find("#browse_result").html(mediumSpinnerImg());
     var parentBrowseViewModel=new BrowseViewModel(null,null,null);
-    displayGroupDetail(groupId,parentBrowseViewModel,null)
+    displayGroupDetail(groupId,parentBrowseViewModel,null);
+    enableAutocompleBrowse();
   }
 
 

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=1294333&r1=1294332&r2=1294333&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 Mon Feb 27 21:20:49 2012
@@ -24,6 +24,7 @@
     </div>
   </div>
   <div id="main_browse_result">
+    <input type="text" class="form-search span6" size="50" id="browse-autocomplete"/>
     <div id="main_browse_result_content" class="well">
       <div id="browse_breadcrumb" data-bind='template:{name:"browse-breadcrumb-tmpl"}'></div>
       <div id="browse_result" class="well" data-bind='template:{name:"browse-groups-tmpl"}'></div>

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=1294333&r1=1294332&r2=1294333&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 Mon Feb 27 21:20:49 2012
@@ -329,6 +329,19 @@ mapStringList=function(data){
   return [];
 }
 
+// utils
+String.prototype.endsWith = function(str) {
+  return (this.match(str+"$")==str)
+}
+
+String.prototype.startsWith = function(str) {
+  return (this.match("^"+str)==str)
+}
+
+String.prototype.substringBeforeLast = function(str) {
+  return this.substring(0,this.lastIndexOf(str));
+}
+
 // extends jquery tmpl to support var def
 $.extend($.tmpl.tag, {
     "var": {