]> source.dussan.org Git - archiva.git/commitdiff
start displaying search results in a grid
authorOlivier Lamy <olamy@apache.org>
Tue, 28 Feb 2012 00:03:47 +0000 (00:03 +0000)
committerOlivier Lamy <olamy@apache.org>
Tue, 28 Feb 2012 00:03:47 +0000 (00:03 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1294406 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/knockout.simpleGrid.js

index f0c7bd8a412e5491d54fc80009e2816d81c443b5..b9c2abe0d962648dc8c0733895ae453abbabb820 100644 (file)
@@ -217,3 +217,7 @@ search.artifact.search.form.advanced=Advanced Parameters
 search.artifact.search.form.query.artifactId=Artifact ID
 search.artifact.search.form.repositories.all=All
 search.artifact.search.form.terms.empty=You must enter some search terms.
+search.artifact.noresults=No results found.
+search.artifact.results.groupId=Group ID
+search.artifact.results.artifactId=Artifact ID
+search.artifact.results.version=Version
index 2fb7b181c67ca8ef64fc63de707d3a1d81e3a1fe..7885cc422799e15779653f126c70696ef2f4f497 100644 (file)
@@ -639,15 +639,38 @@ $(function() {
   }
 
   ResultViewModel=function(artifacts){
-    this.artifacts=artifacts;
+    var self=this;
+    this.artifacts=ko.observableArray(artifacts);
+    this.gridViewModel = new ko.simpleGrid.viewModel({
+      data: self.artifacts,
+      columns: [
+        {
+          headerText: $.i18n.prop('search.artifact.results.groupId'),
+          rowText: "groupId"
+        },
+        {
+          headerText: $.i18n.prop('search.artifact.results.artifactId'),
+          rowText: "artifactId"
+        },
+        {
+          headerText: $.i18n.prop('search.artifact.results.version'),
+          rowText: "version"
+        }
+      ],
+      pageSize: 10,
+      gridUpdateCallBack: function(){
+
+      }
+    });
   }
 
 
   SearchViewModel=function(){
+    var self=this;
     this.searchRequest=ko.observable(new SearchRequest());
     this.observableRepoIds=ko.observableArray([]);
     this.selectedRepoIds=[];
-
+    this.resultViewModel=new ResultViewModel([]);
     basicSearch=function(){
       //$.log("query:"+this.searchParameters().basicQueryString());
       //$.log("repoIds:"+this.selectedRepoIds);
@@ -664,8 +687,8 @@ $(function() {
         // cleanup previours error message
         customShowError("#main-content #search-basic-form", null, null, []);
       }
-      var searchResults=$("#main-content #search-results" );
-      searchResults.html(mediumSpinnerImg());
+      var searchResultsGrid=$("#main-content #search-results #search-results-grid" );
+      $("#main-content #user-messages").html(mediumSpinnerImg());
       this.searchRequest().repositories=this.selectedRepoIds;
       $.ajax("restServices/archivaServices/searchService/quickSearchWithRepositories",
         {
@@ -674,10 +697,20 @@ $(function() {
           contentType: 'application/json',
           dataType: 'json',
           success: function(data) {
-            var resultViewModel=new ResultViewModel(mapArtifacts(data));
-            searchResults.attr("data-bind","template:{name:'search-results-view-tmpl'}");
-            ko.applyBindings(resultViewModel,searchResults.get(0));
-            activateSearchResultsTab();
+            clearUserMessages();
+            var artifacts=mapArtifacts(data);
+            if (artifacts.length<1){
+              displayWarningMessage( $.i18n.prop("search.artifact.noresults"));
+              return;
+            } else {
+              self.resultViewModel.artifacts(artifacts);
+              if (!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));
+              }
+              activateSearchResultsTab();
+            }
           },
           error: function(data) {
             var res = $.parseJSON(data.responseText);
index 338c0f4bd6e720b206ad9ffbe3b236d86c308bc9..ae212d7c621581f253ed4d3b5c08c3a6de32fe95 100644 (file)
 
 
       <div id="search-results" class="tab-pane">
-        No Results yet. Try a search !
+        <table class="table table-striped table-bordered" id="search-results-grid">
+        </table>
+        <div id="search-results-view-grid-pagination"></div>
       </div>
 
       </div>
 
 </script>
 
-<script id="search-results-view-tmpl" type="text/html">
-  {{if artifacts.length==0}}
-    no results
-  {{else}}
-    results
-  {{/if}}
+<script id="search-results-view-grid-tmpl" type="text/html">
+    <thead>
+        <tr>
+          {{each(i, columnDefinition) columns}}
+            <th title="${ columnDefinition.title }">${ columnDefinition.headerText }</th>
+          {{/each}}
+        </tr>
+    </thead>
+    <tbody>
+        {{each(i, row) itemsOnCurrentPage()}}
+            <tr>
+              {{each(j, columnDefinition) columns}}
+                <td>${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }</td>
+              {{/each}}
+            </tr>
+        {{/each}}
+    </tbody>
 </script>
index 4c2ca96ee67ecca61b186871f881011ce984d275..68f7cfa30100bfd3c1de9c5dd446b4bc9143cc4e 100644 (file)
 
           // Render the page links
           var pageLinksContainer = $("#"+allBindings.pageLinksId).get(0);
-          if (viewModel.pageLinksUpdateCallBack){
-            ko.renderTemplate(pageLinksTemplateName, viewModel, { templateEngine: templateEngine }, pageLinksContainer, "replaceNode")
-              .subscribe(viewModel.pageLinksUpdateCallBack);
-          } else {
-            ko.renderTemplate(pageLinksTemplateName, viewModel, { templateEngine: templateEngine }, pageLinksContainer, "replaceNode");
-          }
+          ko.renderTemplate(pageLinksTemplateName, viewModel, { templateEngine: templateEngine }, pageLinksContainer, "replaceNode")
+            .subscribe(viewModel.pageLinksUpdateCallBack?viewModel.pageLinksUpdateCallBack:function(){});
           if (viewModel.pageLinksUpdateCallBack) viewModel.pageLinksUpdateCallBack();
         }
     };