]> source.dussan.org Git - archiva.git/commitdiff
MRM-1811 add alternative pagination for simplegrid
authorEric Barboni <skygo@apache.org>
Tue, 14 Oct 2014 00:56:36 +0000 (02:56 +0200)
committerEric Barboni <skygo@apache.org>
Tue, 14 Oct 2014 00:56:36 +0000 (02:56 +0200)
archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/knockout.simpleGrid.js
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/redback/users.js
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/templates/archiva/generics.html

index fd6a5b91d67cfe6246deb1cb3856f06dbb2b1d7d..75cbd772ce2fa42eb63dacd386b02f8b76653394 100644 (file)
@@ -711,4 +711,9 @@ version.delete.missing.repoId=You must select a Repository
 
 
 
+# navigation
+navigation.previous=Previous
+navigation.next=Next
+navigation.first=First
+navigation.last=Last
 
index 90a0ff502aa34513842264df2d6e88032b282e7f..99f0c6eb51f836c6b60721495ac8687df68d577c 100644 (file)
@@ -29,7 +29,9 @@
       this.currentPageIndex = ko.observable(0);
       this.pageSize = configuration.pageSize || 5;
       this.columns = configuration.columns;
-
+      // true for prev next nav
+      this.innerNavigation = configuration.innerNavigation;
+      this.navsize = configuration.navsize || 10; 
       this.itemsOnCurrentPage = ko.computed(function () {
           var startIndex = this.pageSize * this.currentPageIndex();
           var items = this.data.slice(startIndex, startIndex + this.pageSize);
         // Allow the default templates to be overridden
         var gridTemplateName      = allBindings.simpleGridTemplate || "ko_usersGrid_grid",
             pageLinksTemplateName = allBindings.simpleGridPagerTemplate || "ko_simpleGrid_pageLinks";
-
+//ko_simpleGrid_pageLinksinnernav
+        if (viewModel.innerNavigation) {
+            pageLinksTemplateName = "ko_simpleGrid_pageLinksinnernav";
+        }
         // Render the main grid
         var gridContainer = element.appendChild(document.createElement("DIV"));
         ko.renderTemplate(gridTemplateName, viewModel, { templateEngine: templateEngine }, gridContainer, "replaceNode")
             .subscribe(viewModel.gridUpdateCallBack?viewModel.gridUpdateCallBack:function(){});
 
         if (viewModel.gridUpdateCallBack) viewModel.gridUpdateCallBack();
-
         // Render the page links
         var pageLinksContainer = $("#"+allBindings.pageLinksId).get(0);
         var renderedTemplate = ko.renderTemplate(pageLinksTemplateName, viewModel, { templateEngine: templateEngine }, pageLinksContainer, "replaceNode");
index d9cc59d90cfeef5198e7532f1e048c47e6e9f728..9510feed014a14cf27ee806dbc05906c9b9be148 100644 (file)
@@ -48,7 +48,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid,typeahead) {
           filter: true
         }
       ],
-      pageSize: 10,
+      pageSize: 10,innerNavigation : true,
       gridUpdateCallBack: function(){
         $.log("gridUpdateCallBack users result");
         applyAutocompleteOnUsersHeaders(self);
index 118265db8eac892504fff83ab4aa5be3cdb69e84..0fd1753cba0ce16f1c8e0b070c684285447dd83e 100644 (file)
   </div>
 </script>
 
+<script id="ko_simpleGrid_pageLinksinnernav" type="text/html">
+  <div class="pagination">
+    <ul>
+      <li data-bind="css: { active: 0 == currentPageIndex() }">
+        <a href="#" data-bind="click: function() { currentPageIndex(0) }">
+          ${$.i18n.prop('navigation.first')}
+        </a>
+      </li>
+      <li data-bind="css: { active: 0 == currentPageIndex() }">
+        <a href="#" data-bind="click: function() { currentPageIndex(currentPageIndex()-1) }">
+          ${$.i18n.prop('navigation.previous')}
+        </a>
+      </li>
+      {{if currentPageIndex() < navsize }}
+      {{each(i) ko.utils.range(1, Math.min( navsize, maxPageIndex()-1))}}
+       <li data-bind="css: {active: i == currentPageIndex() }">
+        <a href="#" data-bind="click: function() { currentPageIndex( i + 1 ) }">         
+          ${ 1 + i }
+        </a>
+      </li>
+      {{/each}}
+      {{else currentPageIndex() > maxPageIndex() - navsize  }}
+      {{each(i) ko.utils.range(1,navsize)}}
+      <li data-bind="css: {active: currentPageIndex() ==  maxPageIndex() - navsize + i }">
+        <a href="#" data-bind="click: function() { currentPageIndex( maxPageIndex() - navsize + i  ) }">         
+         ${ maxPageIndex() - navsize + i + 1 }
+        </a>
+      </li>
+      {{/each}}
+      {{else}}
+       {{each(i) ko.utils.range(currentPageIndex(), Math.min( currentPageIndex() + navsize, maxPageIndex()-1))}}
+      <li data-bind="css: {active: i == 0 }">
+        <a href="#" data-bind="click: function() { currentPageIndex( i + currentPageIndex()  ) }">         
+        ${ currentPageIndex() + 1 + i}
+        </a>
+      </li>
+      {{/each}}
+      {{/if}}
+      
+      <li data-bind="css: { active: maxPageIndex()-1 == currentPageIndex() }">
+        <a href="#" data-bind="click: function() { currentPageIndex(currentPageIndex()+1) }">
+          ${$.i18n.prop('navigation.next')}
+        </a>
+      </li>
+      <li data-bind="css: { active: maxPageIndex()-1 == currentPageIndex() }">
+        <a href="#" data-bind="click: function() { currentPageIndex(maxPageIndex()-1) }">
+          ${$.i18n.prop('navigation.last')}
+        </a>
+      </li>
+    </ul>
+  </div>
+</script>
+
 <script id="welcome" type="text/html">
   <div class="row-fluid">
     <div class="row">