Adds resolve to the router.

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

Branch: refs/heads/angular
Commit: 80ecabf42a98220e5bb1216399b4ed3a17ac2bac
Parents: 2cfbb8e
Author: Jmeas <[email protected]>
Authored: Tue Aug 12 10:47:30 2014 -0400
Committer: Jmeas <[email protected]>
Committed: Tue Aug 12 10:47:30 2014 -0400

----------------------------------------------------------------------
 .../src/subapps/admin/categories/categories.js  |  3 +++
 .../admin/categories/controllers/categories.js  | 22 +++------------
 .../admin/categories/controllers/category.js    | 28 +++++++++++++++-----
 .../admin/categories/controllers/create.js      | 23 ++++++++++++++++
 .../src/subapps/admin/categories/routes.js      | 16 +++++++++--
 .../admin/categories/templates/categories.html  |  2 +-
 .../preferences/controllers/preferences.js      | 10 +++----
 .../src/subapps/admin/preferences/routes.js     |  7 ++++-
 8 files changed, 78 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/categories.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/categories/categories.js 
b/rave-portal-ng/src/subapps/admin/categories/categories.js
index c1d5c86..a63af3b 100644
--- a/rave-portal-ng/src/subapps/admin/categories/categories.js
+++ b/rave-portal-ng/src/subapps/admin/categories/categories.js
@@ -31,6 +31,9 @@ define(function(require) {
   var categoryCtrl = require('./controllers/category');
   categories.controller('categoryCtrl', categoryCtrl);
 
+  var createCtrl = require('./controllers/create');
+  categories.controller('createCtrl', createCtrl);
+
   // Register the routes
   var routes = require('./routes');
   categories.config(routes);

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js
----------------------------------------------------------------------
diff --git 
a/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js 
b/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js
index be1c3eb..a0b1281 100644
--- a/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js
+++ b/rave-portal-ng/src/subapps/admin/categories/controllers/categories.js
@@ -1,26 +1,12 @@
 /*
  * categories
- * Handles submission of our form
+ * Attaches our resolved resources to the scope
  *
  */
 
 define(function(require) {
-  return ['$scope', 'categoriesResource', '$stateParams', '$rootScope',
-  function($scope, categoriesResource, $stateParams, $rootScope) {
-
-    $scope.categories = categoriesResource.query();
-
-    $scope.onCreate = function() {
-      var newResource = categoriesResource.save({
-        text: $scope.newText
-      });
-
-      newResource.$promise
-        .then(function() {
-          $scope.categories.push(newResource);
-        })
-        .catch(function() {
-        });
-    };
+  return ['$scope', 'categoriesResource', '$stateParams', '$rootScope', 
'categoriesList',
+  function($scope, categoriesResource, $stateParams, $rootScope, 
categoriesList) {
+    $scope.categories = categoriesList;
   }];
 });

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/controllers/category.js
----------------------------------------------------------------------
diff --git 
a/rave-portal-ng/src/subapps/admin/categories/controllers/category.js 
b/rave-portal-ng/src/subapps/admin/categories/controllers/category.js
index de72013..e8d3e92 100644
--- a/rave-portal-ng/src/subapps/admin/categories/controllers/category.js
+++ b/rave-portal-ng/src/subapps/admin/categories/controllers/category.js
@@ -5,15 +5,32 @@
  */
 
 define(function(require) {
-  return ['$scope', 'categoryResource', '$state', '$stateParams',
-  function($scope, categoryResource, $state, $stateParams) {
-    $scope.category = categoryResource.get({id: $stateParams.id});
+  return ['$scope', 'categoryResource', '$state', '$stateParams', 'category',
+  function($scope, categoryResource, $state, $stateParams, category) {
+    $scope.category = category;
 
     $scope.category.$promise.then(function(res) {
       $scope.text = res.text;
     }).catch(function(err) {
     });
 
+    // Remove the category from the list of categories in the scope
+    this.removeFromList = function() {
+      var oldCategory = _.findWhere($scope.categories, {ID:+$stateParams.id});
+      var oldIndex = _.indexOf($scope.categories, oldCategory);
+      $scope.categories.splice(oldIndex, 1);
+    };
+
+    // Replace the old item in the list with the new
+    this.updateList = function(newResource) {
+      var oldCategory = _.findWhere($scope.categories, {ID:+$stateParams.id});
+      var oldIndex = _.indexOf($scope.categories, oldCategory);
+      $scope.categories[oldIndex] = newResource;
+      $scope.category = newResource;
+    };
+
+    var ctrl = this;
+
     $scope.onSave = function() {
       var savedResource = categoryResource.update({
         id: $stateParams.id,
@@ -21,9 +38,7 @@ define(function(require) {
       });
       
       savedResource.$promise
-        .then(function() {
-          $scope.category = savedResource;
-        })
+        .then(ctrl.updateList)
         .catch(function() {
         });
     };
@@ -35,6 +50,7 @@ define(function(require) {
 
       deletedResource.$promise
         .then(function() {
+          ctrl.removeFromList();
           $state.transitionTo('portal.admin.categories');
         })
         .catch(function() {

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/controllers/create.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/categories/controllers/create.js 
b/rave-portal-ng/src/subapps/admin/categories/controllers/create.js
new file mode 100644
index 0000000..cfb1c7d
--- /dev/null
+++ b/rave-portal-ng/src/subapps/admin/categories/controllers/create.js
@@ -0,0 +1,23 @@
+/*
+ * createCtrl
+ * Handles submission of our form
+ *
+ */
+
+define(function(require) {
+  return ['$scope', 'categoriesResource',
+  function($scope, categoriesResource) {
+    $scope.onCreate = function() {
+      var newResource = categoriesResource.save({
+        text: $scope.newText
+      });
+
+      newResource.$promise
+        .then(function() {
+          $scope.categories.push(newResource);
+        })
+        .catch(function() {
+        });
+    };
+  }];
+});

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/routes.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/categories/routes.js 
b/rave-portal-ng/src/subapps/admin/categories/routes.js
index 8e51a51..a716076 100644
--- a/rave-portal-ng/src/subapps/admin/categories/routes.js
+++ b/rave-portal-ng/src/subapps/admin/categories/routes.js
@@ -19,7 +19,13 @@ define(function(require) {
           url: '/categories',
           templateUrl: '/subapps/admin/categories/templates/categories.html',
           authenticate: true,
-          controller: categoriesCtrl
+          controller: categoriesCtrl,
+          resolve: {
+            categoriesList: ['categoriesResource',
+              function(categoriesResource) {
+                return categoriesResource.query();
+              }]
+          }
         })
 
         // The detail page for a single category
@@ -27,7 +33,13 @@ define(function(require) {
           url: '/categories/category-:id',
           templateUrl: '/subapps/admin/categories/templates/category.html',
           authenticate: true,
-          controller: categoryCtrl
+          controller: categoryCtrl,
+          resolve: {
+            category: ['categoryResource', '$stateParams',
+              function(categoryResource, $stateParams) {
+                return categoryResource.get({id: $stateParams.id});
+              }]
+          }
         });
     }
   ];

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/categories/templates/categories.html
----------------------------------------------------------------------
diff --git 
a/rave-portal-ng/src/subapps/admin/categories/templates/categories.html 
b/rave-portal-ng/src/subapps/admin/categories/templates/categories.html
index 7b47c21..40f5bad 100644
--- a/rave-portal-ng/src/subapps/admin/categories/templates/categories.html
+++ b/rave-portal-ng/src/subapps/admin/categories/templates/categories.html
@@ -33,7 +33,7 @@
     </tbody>
   </table>
   <div>
-    <form id="createCategory" class="form-inline">
+    <form id="createCategory" class="form-inline" ng-controller="createCtrl">
       <fieldset>
         <legend>
           Create Category

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/preferences/controllers/preferences.js
----------------------------------------------------------------------
diff --git 
a/rave-portal-ng/src/subapps/admin/preferences/controllers/preferences.js 
b/rave-portal-ng/src/subapps/admin/preferences/controllers/preferences.js
index 950da46..9b8cd11 100644
--- a/rave-portal-ng/src/subapps/admin/preferences/controllers/preferences.js
+++ b/rave-portal-ng/src/subapps/admin/preferences/controllers/preferences.js
@@ -10,7 +10,7 @@ define(function(require) {
   // Our list of preferences. You must put any
   // new preferences here for Angular to auto-update
   // the ng-model.
-  var preferences = [
+  var preferencesKeys = [
     'titleSuffix',
     'pageSize',
     'defaultWidgetHeight',
@@ -20,17 +20,17 @@ define(function(require) {
     'javascriptDebugMode'
   ];
 
-  return ['$scope', 'preferencesResource',
-  function($scope, preferencesResource) {
+  return ['$scope', 'preferencesResource', 'preferences',
+  function($scope, preferencesResource, preferences) {
 
     // Create our preferences object on the scope.
     $scope.preferences = {};
 
     // Try to get the current preferences to show the user
-    $scope.currentPreferences = preferencesResource.get();
+    $scope.currentPreferences = preferences;
     $scope.currentPreferences.$promise
       .then(function(res) {
-        var currentPrefs = _.pick(res, preferences);
+        var currentPrefs = _.pick(res, preferencesKeys);
         _.each(currentPrefs, function(value, key) {
           $scope.preferences[key] = value;
         });

http://git-wip-us.apache.org/repos/asf/rave/blob/80ecabf4/rave-portal-ng/src/subapps/admin/preferences/routes.js
----------------------------------------------------------------------
diff --git a/rave-portal-ng/src/subapps/admin/preferences/routes.js 
b/rave-portal-ng/src/subapps/admin/preferences/routes.js
index 7e68e26..fd6495f 100644
--- a/rave-portal-ng/src/subapps/admin/preferences/routes.js
+++ b/rave-portal-ng/src/subapps/admin/preferences/routes.js
@@ -18,7 +18,12 @@ define(function(require) {
           url: '/preferences',
           templateUrl: '/subapps/admin/preferences/templates/preferences.html',
           authenticate: true,
-          controller: preferencesCtrl
+          controller: preferencesCtrl,
+          resolve: {
+            preferences: ['preferencesResource', function(preferencesResource) 
{
+             return preferencesResource.get(); 
+            }]
+          }
         });
     }
   ];

Reply via email to