Adds users filter.

Project: http://git-wip-us.apache.org/repos/asf/rave/repo
Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/7e2cf54c
Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/7e2cf54c
Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/7e2cf54c

Branch: refs/heads/angular
Commit: 7e2cf54c2f50db6c78215bdc1fed696afbf128a4
Parents: 26240a1
Author: Jmeas <[email protected]>
Authored: Wed Aug 20 12:28:31 2014 -0400
Committer: Jmeas <[email protected]>
Committed: Wed Aug 20 12:28:31 2014 -0400

----------------------------------------------------------------------
 .../mock-api/modules/users/endpoint.js          |   2 +-
 .../mock-api/modules/users/users-util.js        |  13 ++-
 rave-portal-ng/src/less/core/core.less          |   5 +
 .../admin/users/controllers/search-form.js      |  91 ++++++++++++++++
 .../subapps/admin/users/controllers/users.js    |  24 +----
 .../subapps/admin/users/templates/users.html    | 105 ++++++++++---------
 rave-portal-ng/src/subapps/admin/users/users.js |   3 +
 .../templates/create-account.html               |   1 -
 8 files changed, 170 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/mock-api/modules/users/endpoint.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/mock-api/modules/users/endpoint.js 
b/rave-portal-ng/mock-api/modules/users/endpoint.js
index 0ef4a20..9b8277d 100644
--- a/rave-portal-ng/mock-api/modules/users/endpoint.js
+++ b/rave-portal-ng/mock-api/modules/users/endpoint.js
@@ -15,7 +15,7 @@ define(function(require) {
     // Return our paginated data
     get: function(url, data, headers, params, currentUser) {
       var currentPage = params.page || 1;
-      return [200, usersUtil.getPage(currentPage)];
+      return [200, usersUtil.getPage(currentPage, params.filter)];
     }
   });
 

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/mock-api/modules/users/users-util.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/mock-api/modules/users/users-util.js 
b/rave-portal-ng/mock-api/modules/users/users-util.js
index 5f866b0..71e92e2 100644
--- a/rave-portal-ng/mock-api/modules/users/users-util.js
+++ b/rave-portal-ng/mock-api/modules/users/users-util.js
@@ -16,15 +16,22 @@ define(function(require) {
       return api.db.query('users');
     },
 
-    // Get the list of all users
-    getPage: function(currentPage) {
+    // Get the list of users, optionally filtering by filter string
+    getPage: function(currentPage, filter) {
 
       // Get the page size from the database
       var pageSize = preferencesUtil.getPreference('pageSize');
 
+      // Get a naive list of users from the DB
       var allUsers = usersUtil.getAll();
 
-      // Get a naive list of users from the DB
+      // Filter them, if filter is passed
+      if (filter) {
+        allUsers = _.filter(allUsers, function(user) {
+          return user.username.indexOf(filter) > -1;
+        });
+      }
+
       var filteredUsers = [];
 
       _.each(allUsers, function(rawUser) {

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/less/core/core.less
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/less/core/core.less 
b/rave-portal-ng/src/less/core/core.less
index a1f4407..57462a0 100644
--- a/rave-portal-ng/src/less/core/core.less
+++ b/rave-portal-ng/src/less/core/core.less
@@ -33,6 +33,11 @@
   display: none !important;
 }
 
+.bold-link {
+  font-weight: bold;
+  cursor: pointer;
+}
+
 /* Sticky footer */
 * {
   margin: 0;

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js 
b/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js
new file mode 100644
index 0000000..8511477
--- /dev/null
+++ b/rave-portal-ng/src/subapps/admin/users/controllers/search-form.js
@@ -0,0 +1,91 @@
+/*
+ * searchForm
+ * A controller for a users page. It keeps our
+ * data up-to-date as the user filters things.
+ *
+ */
+
+define(function(require) {
+
+  // Return the categories resource
+  return ['$scope', 'usersResource', 'pagination',
+  function($scope, usersResource, pagination) {
+
+    // Our paginationPages
+    $scope.paginationPages = pagination.paginationPages;
+
+    $scope.prevPageDisabled = function() {
+      if (!$scope.currentPage) {
+        return 'disabled';
+      }
+      return $scope.currentPage === 1 ? 'disabled' : '';
+    };
+
+    $scope.nextPageDisabled = function() {
+      if (!$scope.usersMeta) {
+        return 'disabled';
+      }
+      var maxPage = $scope.currentPage === $scope.usersMeta.pageCount;
+      var noPages = !$scope.usersMeta.pageCount;
+      return maxPage || noPages ? 'disabled' : '';
+    };
+
+    // Whether or not we show the table
+    $scope.showResults = function() {
+
+      // If there aren't any users, we assume that there will be.
+      // So we still show the table.
+      if (!$scope.users) {
+        return true;
+      }
+
+      // If there are users, we won't show the table if the
+      // length is 0.
+      else {
+        return !!$scope.users.length;
+      }
+    };
+
+    $scope.clearSearch = function() {
+      var usersList = usersResource.get();
+
+      usersList.$promise
+        .then(function(response) {
+          $scope.users = response.data;
+
+          var usersMeta = usersList.metadata;
+
+          // Coerce each piece of metadata to a number.
+          _.each(usersMeta, function(val, key) {
+            usersMeta[key] = +val;
+          });
+
+          $scope.usersMeta = usersMeta;
+        })
+        .catch(function() {
+        });
+    };
+
+    $scope.search = function() {
+      var usersList = usersResource.get({
+        filter: $scope.filter
+      });
+
+      usersList.$promise
+        .then(function(response) {
+          $scope.users = response.data;
+
+          var usersMeta = usersList.metadata;
+
+          // Coerce each piece of metadata to a number.
+          _.each(usersMeta, function(val, key) {
+            usersMeta[key] = +val;
+          });
+
+          $scope.usersMeta = usersMeta;
+        })
+        .catch(function() {
+        });
+    };
+  }];
+});

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/subapps/admin/users/controllers/users.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/users/controllers/users.js 
b/rave-portal-ng/src/subapps/admin/users/controllers/users.js
index 2125847..0bcde03 100644
--- a/rave-portal-ng/src/subapps/admin/users/controllers/users.js
+++ b/rave-portal-ng/src/subapps/admin/users/controllers/users.js
@@ -1,13 +1,12 @@
 /*
  * usersController
- * Sets up our data & pagination.
+ * This controller sets up our initial data.
  *
  */
 
 define(function(require) {
-  return ['$scope', '$stateParams', 'pagination', 'usersList', '$rootScope',
-  function($scope, $stateParams, pagination, usersList, $rootScope) {
-
+  return ['$scope', '$stateParams', 'pagination', 'usersList', 'usersResource',
+  function($scope, $stateParams, pagination, usersList, usersResource) {
     $scope.currentPage = +$stateParams.page || 0;
 
     usersList.$promise.then(function() {
@@ -22,22 +21,5 @@ define(function(require) {
 
       $scope.usersMeta = usersMeta;
     });
-
-    // Our paginationPages
-    $scope.paginationPages = pagination.paginationPages;
-
-    $scope.prevPageDisabled = function() {
-      if (!$scope.currentPage) {
-        return 'disabled';
-      }
-      return $scope.currentPage === 1 ? 'disabled' : '';
-    };
-
-    $scope.nextPageDisabled = function() {
-      if (!$scope.usersMeta) {
-        return 'disabled';
-      }
-      return $scope.currentPage === $scope.usersMeta.pageCount ? 'disabled' : 
'';
-    };
   }];
 });

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/subapps/admin/users/templates/users.html
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/users/templates/users.html 
b/rave-portal-ng/src/subapps/admin/users/templates/users.html
index f53f36a..3cb0241 100644
--- a/rave-portal-ng/src/subapps/admin/users/templates/users.html
+++ b/rave-portal-ng/src/subapps/admin/users/templates/users.html
@@ -1,8 +1,54 @@
 <article ui-view>
-  <h2>
-    Showing {{ usersMeta.start }} - {{ usersMeta.end }} of {{ 
usersMeta.totalUsers }} results
-  </h2>
-  <div class="searchHeading paginationHeading">
+  <form class="form-horizontal search-form" ng-controller="searchCtrl">
+    <h2>
+      Showing {{ usersMeta.start }} - {{ usersMeta.end }} of {{ 
usersMeta.totalUsers }} results
+    </h2>
+    <div class="searchHeading paginationHeading">
+      <div class="pagination">
+        <ul>
+          <li ng-switch on="prevPageDisabled()" ng-class="prevPageDisabled()">
+            <a ng-switch-when="disabled">&lt;</a>
+            <a ng-switch-default 
ui-sref="portal.admin.users({page:usersMeta.currentPage-1})">&lt;</a>
+          </li>
+          <li ng-repeat="n in paginationPages(usersMeta.currentPage, 
usersMeta.pageCount)" ng-class="{ active: n == usersMeta.currentPage }">
+            <a ui-sref="portal.admin.users({page:n})">{{ n }}</a>
+          </li>
+          <li ng-switch on="nextPageDisabled()" ng-class="nextPageDisabled()">
+            <a ng-switch-when="disabled">&gt;</a>
+            <a ng-switch-default 
ui-sref="portal.admin.users({page:usersMeta.currentPage+1})">&gt;</a>
+          </li>
+        </ul>
+      </div>
+      <fieldset>
+        <div class="input-append">
+          <input class="input-medium" type="search" id="searchTerm" 
name="searchTerm" value="" placeholder="Search Users" ng-model="filter">
+          <button class="btn btn-primary" ng-click="search()">Search</button>
+        </div>
+      </fieldset>
+    </div>
+    <div ng-show="!showResults()" class="alert alert-warning">
+      There were no results. <a ng-click="clearSearch()" 
class="bold-link">Clear search.</a>
+    </div>
+    <table class="table table-striped table-bordered table-condensed" 
ng-show="showResults()">
+      <thead>
+        <tr>
+          <th>Username</th>
+          <th>Email</th>
+          <th>Account Enabled</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr ng-repeat="user in users">
+          <td>
+            <a ui-sref="portal.admin.users.detail({id: user.ID, page: null})">
+              {{ user.username }}
+            </a>
+          </td>
+          <td>{{ user.email }}</td>
+          <td>{{ user.enabled }}</td>
+        </tr>
+      </tbody>
+    </table>
     <div class="pagination">
     <ul>
       <li ng-switch on="prevPageDisabled()" ng-class="prevPageDisabled()">
@@ -17,48 +63,11 @@
         <a ng-switch-default 
ui-sref="portal.admin.users({page:usersMeta.currentPage+1})">&gt;</a>
       </li>
     </ul>
-  </div>
-    <form class="form-horizontal search-form" 
action="/portal/app/admin/users/search" method="get">
-      <fieldset>
-        <div class="input-append">
-          <input class="input-medium" type="search" id="searchTerm" 
name="searchTerm" value="" placeholder="Search Users">
-          <button class="btn btn-primary" type="submit" 
value="Search">Search</button>
-        </div>
-      </fieldset>
-    </form>
-  </div>
-  <table class="table table-striped table-bordered table-condensed">
-    <thead>
-      <tr>
-        <th>Username</th>
-        <th>Email</th>
-        <th>Account Enabled</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr ng-repeat="user in users">
-        <td>
-          <a ui-sref="portal.admin.users.detail({id: user.ID, page: null})">
-            {{ user.username }}
-          </a>
-        </td>
-        <td>{{ user.email }}</td>
-        <td>{{ user.enabled }}</td>
-      </tr>
-    </tbody>
-  </table>
-  <div class="pagination">
-  <ul>
-    <li ng-switch on="prevPageDisabled()" ng-class="prevPageDisabled()">
-      <a ng-switch-when="disabled">&lt;</a>
-      <a ng-switch-default 
ui-sref="portal.admin.users({page:usersMeta.currentPage-1})">&lt;</a>
-    </li>
-    <li ng-repeat="n in paginationPages(usersMeta.currentPage, 
usersMeta.pageCount)" ng-class="{ active: n == usersMeta.currentPage }">
-      <a ui-sref="portal.admin.users({page:n})">{{ n }}</a>
-    </li>
-    <li ng-switch on="nextPageDisabled()" ng-class="nextPageDisabled()">
-      <a ng-switch-when="disabled">&gt;</a>
-      <a ng-switch-default 
ui-sref="portal.admin.users({page:usersMeta.currentPage+1})">&gt;</a>
-    </li>
-  </ul>
+    <fieldset>
+      <legend>Add New User</legend>
+      <br>
+        <button class="btn btn-primary" 
href="/portal/app/admin/adduser?referringPageId=1"><i class="icon-plus 
icon-white"></i> Add user</button>
+      <br>
+    </fieldset>
+  </form>
 </article>

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/subapps/admin/users/users.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/users/users.js 
b/rave-portal-ng/src/subapps/admin/users/users.js
index 47936fc..ef10e2b 100644
--- a/rave-portal-ng/src/subapps/admin/users/users.js
+++ b/rave-portal-ng/src/subapps/admin/users/users.js
@@ -31,6 +31,9 @@ define(function(require) {
   var userCtrl = require('./controllers/user');
   users.controller('userCtrl', userCtrl);
 
+  var searchCtrl = require('./controllers/search-form');
+  users.controller('searchCtrl', searchCtrl);
+
   // Register the routes
   var routes = require('./routes');
   users.config(routes);

http://git-wip-us.apache.org/repos/asf/rave/blob/7e2cf54c/rave-portal-ng/src/subapps/auth/create-account/templates/create-account.html
----------------------------------------------------------------------
diff --git 
a/rave-portal-ng/src/subapps/auth/create-account/templates/create-account.html 
b/rave-portal-ng/src/subapps/auth/create-account/templates/create-account.html
index ab55c20..5e7eaa9 100644
--- 
a/rave-portal-ng/src/subapps/auth/create-account/templates/create-account.html
+++ 
b/rave-portal-ng/src/subapps/auth/create-account/templates/create-account.html
@@ -132,5 +132,4 @@
       <br>You should receive the confirmation email that was sent to {{ email 
}} shortly.
     </div>
   </div>
-  
 </div>

Reply via email to