]> source.dussan.org Git - archiva.git/commitdiff
use a tabs model for the users view
authorOlivier Lamy <olamy@apache.org>
Fri, 16 Dec 2011 20:29:57 +0000 (20:29 +0000)
committerOlivier Lamy <olamy@apache.org>
Fri, 16 Dec 2011 20:29:57 +0000 (20:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1215262 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js [new file with mode: 0644]
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-grids.html
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js

index b8ddd0d1dac637b4ce4f97d8d1c587b953e9246f..dc30547241149fe1a562e871deb505211b65247c 100644 (file)
@@ -54,6 +54,7 @@
        .script("jquery.json-2.3.min.js").wait()
        .script("redback/operation.js").wait()
        .script("redback/redback-tmpl.js").wait()
+       .script("bootstrap-tabs.js")
        .script("bootstrap-modal.js").wait()
        .script("bootstrap-alerts.js").wait()
        .script("bootstrap-dropdown.js").wait()
diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js
new file mode 100644 (file)
index 0000000..a3c7ee1
--- /dev/null
@@ -0,0 +1,80 @@
+/* ========================================================
+ * bootstrap-tabs.js v1.4.0
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2011 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function( $ ){
+
+  "use strict"
+
+  function activate ( element, container ) {
+    container
+      .find('> .active')
+      .removeClass('active')
+      .find('> .dropdown-menu > .active')
+      .removeClass('active')
+
+    element.addClass('active')
+
+    if ( element.parent('.dropdown-menu') ) {
+      element.closest('li.dropdown').addClass('active')
+    }
+  }
+
+  function tab( e ) {
+    var $this = $(this)
+      , $ul = $this.closest('ul:not(.dropdown-menu)')
+      , href = $this.attr('href')
+      , previous
+      , $href
+
+    if ( /^#\w+/.test(href) ) {
+      e.preventDefault()
+
+      if ( $this.parent('li').hasClass('active') ) {
+        return
+      }
+
+      previous = $ul.find('.active a').last()[0]
+      $href = $(href)
+
+      activate($this.parent('li'), $ul)
+      activate($href, $href.parent())
+
+      $this.trigger({
+        type: 'change'
+      , relatedTarget: previous
+      })
+    }
+  }
+
+
+ /* TABS/PILLS PLUGIN DEFINITION
+  * ============================ */
+
+  $.fn.tabs = $.fn.pills = function ( selector ) {
+    return this.each(function () {
+      $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab)
+    })
+  }
+
+  $(document).ready(function () {
+    $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a')
+  })
+
+}( window.jQuery || window.ender );
index ca6d41cf26ed96e7f662671ade92a231f62e52bd..d1d788b9b589b604a4280af68fb6b627007b29a2 100644 (file)
 <script id="usersGrid"  type="text/x-jquery-tmpl">
     <h2>Users list</h2>
 
-    <button data-bind='click: addUser' class="btn">
-        Add User
-    </button>
-
     <button data-bind='click: sortByName'  class="btn">
         Sort by name
     </button>
-
-    <div id="usersPagination"></div>
-
-    <table class="bordered-table zebra-striped" data-bind="simpleGrid: gridViewModel" id="usersTable"></table>
-
-    <div id="createUserForm"></div>
+    <ul id="users-view-tabs" class="tabs">
+      <li class="active">
+        <a href="#users-view">Users</a>
+      </li>
+      <li>
+        <a href="#createUserForm">Add User</a>
+      </li>
+    </ul>
+    <div id="users-view-tabs-content" class="tab-content">
+      <div id="users-view">
+          <table class="bordered-table zebra-striped" data-bind="simpleGrid: gridViewModel" id="usersTable"></table>
+          <div id="usersPagination"></div>
+      </div>
+      <div id="createUserForm"></div>
+    </div>
 </script>
index 7a8781fdf002b0b41dd539b53bb6627a7b125c90..cb20105bccd97953da0bc02dccf267591bbbd7ce 100644 (file)
@@ -25,6 +25,7 @@ $(function() {
     this.loadUsers = function() {
       $.ajax("restServices/redbackServices/userService/getUsers", {
           type: "GET",
+          async: false,
           dataType: 'json',
           success: function(data) {
               var mappedUsers = $.map(data.user, function(item) {
@@ -152,8 +153,19 @@ $(function() {
     window.redbackModel.usersViewModel = new usersViewModel();
     window.redbackModel.usersViewModel.loadUsers();
     ko.applyBindings(window.redbackModel.usersViewModel,jQuery("#main-content").get(0));
+    $("#users-view-tabs").tabs();
+    $("#users-view-tabs").bind('change', function (e) {
+      //$.log( $(e.target).attr("href") ); // activated tab
+      //e.relatedTarget // previous tab
+      if ($(e.target).attr("href")=="#createUserForm") {
+        window.redbackModel.usersViewModel.addUser();
+      }
+    })
+    $("#users-view-tabs-content #users-view").addClass("active");
   }
 
+
+
   userViewModel=function(user) {
       this.user=user;
   }