From 5babe1ce7ff269885fffdf5c5a407d763a0d40d9 Mon Sep 17 00:00:00 2001 From: kingcody Date: Wed, 16 Sep 2015 17:18:25 -0400 Subject: [PATCH 1/4] feat(client:admin): implement admin components as a seperate module --- app/generator.js | 1 + app/templates/client/app/admin(auth)/admin.controller.js | 2 +- app/templates/client/app/admin(auth)/admin.module.js | 7 +++++++ .../client/app/admin(auth)/{admin.js => admin.router.js} | 4 ++-- test/test-file-creation.js | 3 ++- 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 app/templates/client/app/admin(auth)/admin.module.js rename app/templates/client/app/admin(auth)/{admin.js => admin.router.js} (79%) diff --git a/app/generator.js b/app/generator.js index 5478748f0..67a00bfe5 100644 --- a/app/generator.js +++ b/app/generator.js @@ -375,6 +375,7 @@ export default class Generator extends Base { if(this.filters.uirouter) angModules.push("'ui.router'"); if(this.filters.uibootstrap) angModules.push("'ui.bootstrap'"); if(this.filters.auth) { + angModules.unshift(`'${this.scriptAppName}.admin'`); angModules.unshift(`'${this.scriptAppName}.auth'`); angModules.push("'validation.match'"); } diff --git a/app/templates/client/app/admin(auth)/admin.controller.js b/app/templates/client/app/admin(auth)/admin.controller.js index 3cbfd4b7f..bcc8f0a6a 100644 --- a/app/templates/client/app/admin(auth)/admin.controller.js +++ b/app/templates/client/app/admin(auth)/admin.controller.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('<%= scriptAppName %>') +angular.module('<%= scriptAppName %>.admin') .controller('AdminCtrl', function($scope, $http, Auth, User) { // Use the User $resource to fetch all users diff --git a/app/templates/client/app/admin(auth)/admin.module.js b/app/templates/client/app/admin(auth)/admin.module.js new file mode 100644 index 000000000..da769ae91 --- /dev/null +++ b/app/templates/client/app/admin(auth)/admin.module.js @@ -0,0 +1,7 @@ +'use strict'; + +angular.module('<%= scriptAppName %>.admin', [ + '<%= scriptAppName %>.auth'<% if (filters.ngroute) { %>, + 'ngRoute'<% } if (filters.uirouter) { %>, + 'ui.router'<% } %> +]); diff --git a/app/templates/client/app/admin(auth)/admin.js b/app/templates/client/app/admin(auth)/admin.router.js similarity index 79% rename from app/templates/client/app/admin(auth)/admin.js rename to app/templates/client/app/admin(auth)/admin.router.js index 510363868..fd0366df0 100644 --- a/app/templates/client/app/admin(auth)/admin.js +++ b/app/templates/client/app/admin(auth)/admin.router.js @@ -1,6 +1,6 @@ 'use strict'; -angular.module('<%= scriptAppName %>') +angular.module('<%= scriptAppName %>.admin') <% if (filters.ngroute) { %>.config(function($routeProvider) { $routeProvider .when('/admin', { @@ -8,7 +8,7 @@ angular.module('<%= scriptAppName %>') controller: 'AdminCtrl', authenticate: 'admin' }); - });<% } %><% if (filters.uirouter) { %>.config(function($stateProvider) { + });<% } if (filters.uirouter) { %>.config(function($stateProvider) { $stateProvider .state('admin', { url: '/admin', diff --git a/test/test-file-creation.js b/test/test-file-creation.js index 26f326dc7..ef4a3e8e4 100644 --- a/test/test-file-creation.js +++ b/test/test-file-creation.js @@ -267,7 +267,8 @@ describe('angular-fullstack generator', function () { 'client/app/account/signup/signup.controller.' + script, 'client/app/admin/admin.' + markup, 'client/app/admin/admin.' + stylesheet, - 'client/app/admin/admin.' + script, + 'client/app/admin/admin.module.' + script, + 'client/app/admin/admin.router.' + script, 'client/app/admin/admin.controller.' + script, 'client/components/auth/auth.module.' + script, 'client/components/auth/auth.service.' + script, From 8a76da29efd6a35819df1e24f153f2358b685f3d Mon Sep 17 00:00:00 2001 From: kingcody Date: Wed, 16 Sep 2015 17:32:19 -0400 Subject: [PATCH 2/4] feat(client:admin): use controllerAs syntax for `AdminController` --- .../client/app/admin(auth)/admin(html).html | 4 ++-- .../client/app/admin(auth)/admin(jade).jade | 4 ++-- .../app/admin(auth)/admin.controller.js | 23 +++++++++++-------- .../client/app/admin(auth)/admin.router.js | 6 +++-- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/templates/client/app/admin(auth)/admin(html).html b/app/templates/client/app/admin(auth)/admin(html).html index 7688c9b47..fca41494e 100644 --- a/app/templates/client/app/admin(auth)/admin(html).html +++ b/app/templates/client/app/admin(auth)/admin(html).html @@ -3,10 +3,10 @@

The delete user and user index api routes are restricted to users with the 'admin' role.

    -
  • +
  • {{user.name}}
    {{user.email}} - +
diff --git a/app/templates/client/app/admin(auth)/admin(jade).jade b/app/templates/client/app/admin(auth)/admin(jade).jade index bcef64773..822e747d8 100644 --- a/app/templates/client/app/admin(auth)/admin(jade).jade +++ b/app/templates/client/app/admin(auth)/admin(jade).jade @@ -3,9 +3,9 @@ navbar p | The delete user and user index api routes are restricted to users with the 'admin' role. ul.list-group - li.list-group-item(ng-repeat='user in users') + li.list-group-item(ng-repeat='user in admin.users') strong {{user.name}} br span.text-muted {{user.email}} - a.trash(ng-click='delete(user)') + a.trash(ng-click='admin.delete(user)') span.glyphicon.glyphicon-trash.pull-right diff --git a/app/templates/client/app/admin(auth)/admin.controller.js b/app/templates/client/app/admin(auth)/admin.controller.js index bcc8f0a6a..c28d2adf3 100644 --- a/app/templates/client/app/admin(auth)/admin.controller.js +++ b/app/templates/client/app/admin(auth)/admin.controller.js @@ -1,13 +1,18 @@ 'use strict'; -angular.module('<%= scriptAppName %>.admin') - .controller('AdminCtrl', function($scope, $http, Auth, User) { +(function() { + +function AdminController(User) { + // Use the User $resource to fetch all users + var users = this.users = User.query(); - // Use the User $resource to fetch all users - $scope.users = User.query(); + this.delete = function(user) { + user.$remove(); + users.splice(users.indexOf(user), 1); + }; +} + +angular.module('<%= scriptAppName %>.admin') + .controller('AdminController', AdminController); - $scope.delete = function(user) { - User.remove({ id: user._id }); - $scope.users.splice(this.$index, 1); - }; - }); +})(); diff --git a/app/templates/client/app/admin(auth)/admin.router.js b/app/templates/client/app/admin(auth)/admin.router.js index fd0366df0..cc3d9e9f9 100644 --- a/app/templates/client/app/admin(auth)/admin.router.js +++ b/app/templates/client/app/admin(auth)/admin.router.js @@ -5,7 +5,8 @@ angular.module('<%= scriptAppName %>.admin') $routeProvider .when('/admin', { templateUrl: 'app/admin/admin.html', - controller: 'AdminCtrl', + controller: 'AdminController', + controllerAs: 'admin', authenticate: 'admin' }); });<% } if (filters.uirouter) { %>.config(function($stateProvider) { @@ -13,7 +14,8 @@ angular.module('<%= scriptAppName %>.admin') .state('admin', { url: '/admin', templateUrl: 'app/admin/admin.html', - controller: 'AdminCtrl', + controller: 'AdminController', + controllerAs: 'admin', authenticate: 'admin' }); });<% } %> From d93c7d5e56a3a7885c53ddfdfed70c2a04fee31c Mon Sep 17 00:00:00 2001 From: kingcody Date: Wed, 16 Sep 2015 20:18:14 -0400 Subject: [PATCH 3/4] refactor(karma): update file globs, jade preprocessor only when `filters.jade` --- app/templates/_package.json | 4 ++-- app/templates/karma.conf.js | 23 ++++++++--------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/app/templates/_package.json b/app/templates/_package.json index 6eba3d7f3..336292463 100644 --- a/app/templates/_package.json +++ b/app/templates/_package.json @@ -49,7 +49,8 @@ "grunt-contrib-jshint": "~0.11.2", "grunt-contrib-uglify": "^0.9.1", "grunt-contrib-watch": "~0.6.1",<% if (filters.jade) { %> - "grunt-contrib-jade": "^0.15.0",<% } %><% if (filters.less) { %> + "grunt-contrib-jade": "^0.15.0", + "karma-ng-jade2js-preprocessor": "^0.2.0",<% } %><% if (filters.less) { %> "grunt-contrib-less": "^1.0.0",<% } %><% if(filters.babel) { %> "karma-babel-preprocessor": "^5.2.1",<% } %> "grunt-babel": "~5.0.0", @@ -95,7 +96,6 @@ "karma-firefox-launcher": "~0.1.6", "karma-script-launcher": "~0.1.0", "karma-html2js-preprocessor": "~0.1.0", - "karma-ng-jade2js-preprocessor": "^0.2.0", "karma-chrome-launcher": "~0.2.0", "requirejs": "~2.1.11", "karma-requirejs": "~0.2.2", diff --git a/app/templates/karma.conf.js b/app/templates/karma.conf.js index 61aa87b74..f85a28f71 100644 --- a/app/templates/karma.conf.js +++ b/app/templates/karma.conf.js @@ -22,29 +22,25 @@ module.exports = function(config) { // endbower<% if (filters.socketio) { %> 'node_modules/socket.io-client/socket.io.js',<% } %> 'client/app/app.js', - 'client/app/**/*.js', - 'client/components/**/*.js', - 'client/app/**/*.jade', - 'client/components/**/*.jade', - 'client/app/**/*.html', - 'client/components/**/*.html' + 'client/{app,components}/**/*.module.js', + 'client/{app,components}/**/*.js', + 'client/{app,components}/**/*.<%= filters.jade ? '{jade,html}' : 'html' %>' ], preprocessors: { - '**/*.jade': 'ng-jade2js', - '**/*.html': 'html2js',<% if(filters.babel) { %> + '**/*.html': 'html2js'<% if (filters.jade) { %>, + '**/*.jade': 'ng-jade2js'<% } if (filters.babel) { %>, 'client/{app,components}/**/*.js': 'babel'<% } %> }, ngHtml2JsPreprocessor: { stripPrefix: 'client/' - }, + },<% if (filters.jade) { %> ngJade2JsPreprocessor: { stripPrefix: 'client/' - }, + },<% } if (filters.babel) { %> - <% if(filters.babel) { %> babelPreprocessor: { options: { sourceMap: 'inline' @@ -55,8 +51,7 @@ module.exports = function(config) { sourceFileName: function (file) { return file.originalPath; } - }, - <% } %> + },<% } %> // list of files / patterns to exclude exclude: [], @@ -80,7 +75,6 @@ module.exports = function(config) { // enable / disable watching file and executing tests whenever any file changes autoWatch: false, - // Start these browsers, currently available: // - Chrome // - ChromeCanary @@ -91,7 +85,6 @@ module.exports = function(config) { // - IE (only Windows) browsers: ['PhantomJS'], - // Continuous Integration mode // if true, it capture browsers, run tests and exit singleRun: false From 618461ff5da5f27f36d4477d9ac7a44e6b26c516 Mon Sep 17 00:00:00 2001 From: kingcody Date: Thu, 17 Sep 2015 01:18:56 -0400 Subject: [PATCH 4/4] feat(client:admin): use class for AdminController --- .../client/app/admin(auth)/admin.controller.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/templates/client/app/admin(auth)/admin.controller.js b/app/templates/client/app/admin(auth)/admin.controller.js index c28d2adf3..698120b61 100644 --- a/app/templates/client/app/admin(auth)/admin.controller.js +++ b/app/templates/client/app/admin(auth)/admin.controller.js @@ -2,14 +2,17 @@ (function() { -function AdminController(User) { - // Use the User $resource to fetch all users - var users = this.users = User.query(); +class AdminController { - this.delete = function(user) { + constructor(User) { + // Use the User $resource to fetch all users + this.users = User.query(); + } + + delete(user) { user.$remove(); - users.splice(users.indexOf(user), 1); - }; + this.users.splice(this.users.indexOf(user), 1); + } } angular.module('<%= scriptAppName %>.admin')