Author: olamy
Date: Wed Jan 15 03:30:08 2014
New Revision: 1558285

URL: http://svn.apache.org/r1558285
Log:
use typeahead only remove jquery autocomplete

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/search.js
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.10.3.custom.min.js
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/search.html

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/search.js
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/search.js?rev=1558285&r1=1558284&r2=1558285&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/search.js
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/search.js
 Wed Jan 15 03:30:08 2014
@@ -17,8 +17,8 @@
  * under the License.
  */
 
define("archiva.search",["jquery","jquery.ui","i18n","jquery.tmpl","select2","knockout","knockout.simpleGrid","jqueryFileTree"
-  ,"prettify", "d3", "typeahead"]
-, 
function(jquery,jqueryui,i18n,jqueryTmpl,select2,ko,koSimpleGrid,jqueryFileTree,prettify,d3,typeahead)
 {
+  ,"prettify", "d3", "typeahead","hogan"]
+, 
function(jquery,jqueryui,i18n,jqueryTmpl,select2,ko,koSimpleGrid,jqueryFileTree,prettify,d3,typeahead,hogan)
 {
 
   //-----------------------------------------
   // browse part
@@ -1280,15 +1280,18 @@ define("archiva.search",["jquery","jquer
                               
.tmpl({repositories:data,selected:'',feedsUrl:null}));
                 }
 
-                mainContent.find("#browse_artifact_detail" ).hide();
+                mainContent.find("#browse_artifact_detail").hide();
                 mainContent.find("#browse_result").hide();
+                $.log("before slide");
                 mainContent.find("#main_browse_result_content").hide("slide", 
{}, 300,function(){
+                  $.log("yup");
                   
mainContent.find("#browse_breadcrumb").html(smallSpinnerImg());
                   mainContent.find("#browse_artifact").show();
                   
mainContent.find("#browse_artifact").html(mediumSpinnerImg());
                   mainContent.find("#main_browse_result_content").show();
                   var 
metadataUrl="restServices/archivaServices/browseService/projectVersionMetadata/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId);
                   var 
versionsListUrl="restServices/archivaServices/browseService/versionsList/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId);
+                  $.log("before getSelectedBrowsingRepository");
                   var selectedRepo=getSelectedBrowsingRepository();
                   if (selectedRepo){
                     
metadataUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
@@ -1298,12 +1301,13 @@ define("archiva.search",["jquery","jquer
                     type: "GET",
                     dataType: 'json',
                     success: function(data) {
+                      $.log("metadataUrl ok :"+metadataUrl);
                       
artifactDetailViewModel.projectVersionMetadata=mapProjectVersionMetadata(data);
                       $.ajax(versionsListUrl, {
                         type: "GET",
                         dataType: 'json',
                         success: function(data) {
-                          artifactDetailViewModel.versions=ko.observableArray( 
mapVersionsList(data));
+                          
artifactDetailViewModel.versions=ko.observableArray(mapVersionsList(data));
                           
ko.applyBindings(artifactDetailViewModel,mainContent.find("#browse_artifact").get(0));
                           
ko.applyBindings(artifactDetailViewModel,mainContent.find("#browse_breadcrumb").get(0));
 
@@ -1311,7 +1315,8 @@ define("archiva.search",["jquery","jquer
                       });
                     }
                   });
-                });
+                }
+              );
          }})
     });
 
@@ -1413,6 +1418,7 @@ define("archiva.search",["jquery","jquer
   }
 
   enableAutocompleBrowse=function(groupId){
+    $.log("enableAutocompleBrowse");
     $("#select_browse_repository" ).select2({width: "resolve"});
     // browse-autocomplete
     var url="restServices/archivaServices/browseService/rootGroups";
@@ -1424,6 +1430,120 @@ define("archiva.search",["jquery","jquer
       url+="?repositoryId="+encodeURIComponent(selectedRepo);
     }
 
+    var browseBox = $("#main-content").find("#browse-autocomplete" );
+
+    browseBox.typeahead(
+        {
+          name: 'browse-result',
+          remote: {
+            url: groupId?url+'/%QUERY':url,
+            beforeSend: function(jqXhr){
+              $.log("beforeSend");
+            },
+            filter: function(parsedResponse){
+              var request = browseBox.val();
+              $.log("filter:"+request);
+
+              if (request.indexOf('.')<0&&!groupId){
+                // it's rootGroups so filtered
+                var result=[];
+                for(var i=0;i<parsedResponse.browseResultEntries.length;i++){
+                  if 
(parsedResponse.browseResultEntries[i].name.startsWith(request)){
+                    result.push(parsedResponse.browseResultEntries[i]);
+                  }
+                }
+                return result;
+              }
+              $.log("with dot");
+              var query = "";
+              var dotEnd=request.endsWith(".");
+              // org.apache. request with org.apache
+              // org.apa request with org before last dot and filter response 
with startsWith
+              if (request.indexOf(".")>=0){
+                if (dotEnd){
+                  query= groupId?groupId+'.'+request.substring(0, 
request.length-1):request.substring(0, request.length-1);
+                } else {
+                  // substring before last
+                  
query=groupId?groupId+'.'+request.substringBeforeLast("."):request.substringBeforeLast(".");
+                }
+              } else {
+                query=groupId?groupId:request;
+              }
+              $.log("query:"+query);
+              var 
browseUrl="restServices/archivaServices/browseService/browseGroupId/"+encodeURIComponent(query);
+              var selectedRepo=getSelectedBrowsingRepository();
+              if (selectedRepo){
+                browseUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
+              }
+              var result=[];
+              $.ajax({
+                  url: browseUrl,
+                  async:   false,
+                  success:  function(data) {
+                    $.log("ajax get ok");
+                    var browseResultEntries = mapBrowseResultEntries(data);
+                    $.log("mapBrowseResultEntries done");
+                    if (dotEnd){
+                      result=browseResultEntries;
+                    }
+                    var filtered = [];
+                    for(var i=0;i<browseResultEntries.length;i++){
+                      if (groupId){
+                        if 
(browseResultEntries[i].name.startsWith(groupId+'.'+request)){
+                          filtered.push(browseResultEntries[i]);
+                        }
+                      } else {
+                        if (browseResultEntries[i].name.startsWith(request)){
+                          filtered.push(browseResultEntries[i]);
+                        }
+                      }
+                    }
+                    result = filtered;
+                  }
+              });
+              return result;
+            }
+          },
+          valueKey: 'name',
+          maxParallelRequests:0,
+          limit: 50,
+          template: [
+            '<p>{{name}}</p>'
+          ].join(''),
+          engine: Hogan
+        }
+    );
+
+    browseBox.on('typeahead:selected', function(obj, datum) {
+      $.log(obj);
+      //window.sammyArchivaApplication.setLocation("#quicksearch~" + 
datum.artifactId);
+
+      if (datum.project){
+        // value org.apache.maven/maven-archiver
+        // split this org.apache.maven and maven-archiver
+        var id=datum.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];
+        goToArtifactDetail(groupId,artifactId);
+      } else {
+        var selectedRepo=getSelectedBrowsingRepository();
+        var location ="#browse";
+        if (selectedRepo){
+          location+="~"+selectedRepo;
+        }
+        location+="/"+datum.name;
+        window.sammyArchivaApplication.setLocation(location);
+      }
+
+    });
+
+    return;
+
     $( "#main-content").find("#browse-autocomplete" ).autocomplete({
       minLength: 2,
                        source: function(request, response){

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.10.3.custom.min.js
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.10.3.custom.min.js?rev=1558285&r1=1558284&r2=1558285&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.10.3.custom.min.js
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/jquery-ui-1.10.3.custom.min.js
 Wed Jan 15 03:30:08 2014
@@ -1,7 +1,7 @@
-/*! jQuery UI - v1.10.3 - 2014-01-13
+/*! jQuery UI - v1.10.3 - 2014-01-14
 * http://jqueryui.com
-* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, 
jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, 
jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, 
jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, 
jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, 
jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, 
jquery.ui.tabs.js, jquery.ui.tooltip.js
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, 
jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, 
jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, 
jquery.ui.datepicker.js, jquery.ui.effect.js, jquery.ui.effect-slide.js
 * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
 

[... 7 lines stripped ...]
Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/search.html
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/search.html?rev=1558285&r1=1558284&r2=1558285&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/search.html
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/search.html
 Wed Jan 15 03:30:08 2014
@@ -118,7 +118,7 @@
       {{if number>0}}
       <span class="divider" id="browse-autocomplete-divider">/</span>
       {{/if}}
-      <input type="text" class="input-large" size="50" 
id="browse-autocomplete"/>
+      <input type="text" class="input-large twitter-typeahead" size="50" 
id="browse-autocomplete"/>
     </li>
   </ul>
 


Reply via email to