From 40e6d79b41f0c776cdb10e92acb707e60d7c419c Mon Sep 17 00:00:00 2001 From: Francois Zaninotto Date: Tue, 10 Mar 2015 15:19:32 +0100 Subject: [PATCH 1/2] Cleanup after ES6 refactoring --- UPGRADE-0.7.md | 8 +-- examples/blog/config.js | 6 +- src/javascripts/ng-admin.js | 10 +-- .../ng-admin/Crud/column/maColumn.js | 2 +- .../Crud/column/maReferenceManyLinkColumn.js | 2 +- .../ng-admin/Crud/form/FormController.js | 2 +- .../ng-admin/Crud/repository/CreateQueries.js | 2 +- .../ng-admin/Crud/repository/DeleteQueries.js | 2 +- .../ng-admin/Crud/repository/Queries.js | 2 +- .../Crud/repository/RetrieveQueries.js | 2 +- .../ng-admin/Crud/repository/UpdateQueries.js | 2 +- src/javascripts/ng-admin/Crud/routing.js | 4 +- src/javascripts/ng-admin/Main/MainModule.js | 2 +- .../component/controller/AppController.js | 4 +- .../component/controller/SidebarController.js | 2 +- .../Main/component/provider/NgAdmin.js | 24 +++++++ .../provider/NgAdminConfiguration.js | 26 -------- .../Main/component/service/PanelBuilder.js | 2 +- .../ng-admin/Main/config/factories.js | 2 +- .../ng-admin/Main/config/routing.js | 2 +- .../ng-admin/es6/lib/Utils/arrayUtils.js | 20 ------ src/javascripts/ng-admin/es6/lib/View/View.js | 63 ++++++++----------- .../es6/tests/lib/Utils/arrayUtilsTest.js | 18 ------ 23 files changed, 78 insertions(+), 131 deletions(-) create mode 100644 src/javascripts/ng-admin/Main/component/provider/NgAdmin.js delete mode 100644 src/javascripts/ng-admin/Main/component/provider/NgAdminConfiguration.js delete mode 100644 src/javascripts/ng-admin/es6/lib/Utils/arrayUtils.js delete mode 100644 src/javascripts/ng-admin/es6/tests/lib/Utils/arrayUtilsTest.js diff --git a/UPGRADE-0.7.md b/UPGRADE-0.7.md index f7c437d0..688d26ff 100644 --- a/UPGRADE-0.7.md +++ b/UPGRADE-0.7.md @@ -6,17 +6,17 @@ ng-admin 0.7 breaks compatibility with 0.5 and makes the "factories" configurati ## Configuration factory -Configuration is now done through a `NgAdminConfigurationFactoryProvider`. You can retrieve it directly from Angular DI. You just have to retrieve your application from this factory instead of the `NgAdminConfigurationProvider` as previously: +The configuration is now done through the `AdminDescription` object. You can retrieve it directly from Angular DI. You just have to retrieve your application from this factory instead of the `NgAdminConfigurationProvider` as previously. In addition, `NgAdminConfigurationProvider` was renamed to `NgAdminProvider`: ``` diff - app.config(function (NgAdminConfigurationProvider, RestangularProvider) { -+ app.config(function (NgAdminConfigurationFactoryProvider, NgAdminConfigurationProvider, RestangularProvider) { ++ app.config(function (AdminDescription, NgAdminProvider, RestangularProvider) { - var nga = NgAdminConfigurationProvider; -+ var nga = NgAdminConfigurationFactoryProvider; ++ var nga = AdminDescription; // ... - nga.configure(admin); -+ NgAdminConfigurationProvider.configure(admin); ++ NgAdminProvider.configure(admin); }); ``` diff --git a/examples/blog/config.js b/examples/blog/config.js index dd5cec5b..bde93f20 100644 --- a/examples/blog/config.js +++ b/examples/blog/config.js @@ -4,8 +4,8 @@ var app = angular.module('myApp', ['ng-admin']); - app.config(function (NgAdminConfigurationFactory, NgAdminConfigurationProvider, RestangularProvider) { - var nga = NgAdminConfigurationFactory; + app.config(function (AdminDescription, NgAdminProvider, RestangularProvider) { + var nga = AdminDescription; function truncate(value) { if (!value) { @@ -242,7 +242,7 @@ nga.field('published', 'boolean') ]); - NgAdminConfigurationProvider.configure(admin); + NgAdminProvider.configure(admin); }); app.directive('postLink', ['$location', function ($location) { diff --git a/src/javascripts/ng-admin.js b/src/javascripts/ng-admin.js index f86c9a37..552d7a8e 100644 --- a/src/javascripts/ng-admin.js +++ b/src/javascripts/ng-admin.js @@ -25,7 +25,7 @@ require.config({ 'angular-ui-codemirror': 'bower_components/angular-ui-codemirror/ui-codemirror.min', 'MainModule': 'ng-admin/Main/MainModule', 'CrudModule': 'ng-admin/Crud/CrudModule', - 'NgAdminConfigurationFactory': '../../build/ng-admin-configuration' + 'AdminDescription': '../../build/ng-admin-configuration' }, shim: { 'restangular': { @@ -50,10 +50,10 @@ define(function (require) { require('MainModule'); require('CrudModule'); - var configurationFactory = require('NgAdminConfigurationFactory'); + var AdminDescription = require('AdminDescription'); - var factory = angular.module('NgAdminConfigurationFactory', []); - factory.constant('NgAdminConfigurationFactory', new configurationFactory()); + var factory = angular.module('AdminDescriptionModule', []); + factory.constant('AdminDescription', new AdminDescription()); - angular.module('ng-admin', ['main', 'crud', 'NgAdminConfigurationFactory']); + angular.module('ng-admin', ['main', 'crud', 'AdminDescriptionModule']); }); diff --git a/src/javascripts/ng-admin/Crud/column/maColumn.js b/src/javascripts/ng-admin/Crud/column/maColumn.js index d52b39a5..22434d97 100644 --- a/src/javascripts/ng-admin/Crud/column/maColumn.js +++ b/src/javascripts/ng-admin/Crud/column/maColumn.js @@ -60,7 +60,7 @@ define(function (require) { }; } - maColumn.$inject = ['$location', '$anchorScroll', '$compile', 'NgAdminConfiguration', 'FieldViewConfiguration']; + maColumn.$inject = ['$location', '$anchorScroll', '$compile', 'NgAdmin', 'FieldViewConfiguration']; return maColumn; }); diff --git a/src/javascripts/ng-admin/Crud/column/maReferenceManyLinkColumn.js b/src/javascripts/ng-admin/Crud/column/maReferenceManyLinkColumn.js index ef6f1569..a2951bba 100644 --- a/src/javascripts/ng-admin/Crud/column/maReferenceManyLinkColumn.js +++ b/src/javascripts/ng-admin/Crud/column/maReferenceManyLinkColumn.js @@ -29,7 +29,7 @@ define(function (require) { }; } - maReferenceManyLinkColumn.$inject = ['$location', 'NgAdminConfiguration']; + maReferenceManyLinkColumn.$inject = ['$location', 'NgAdmin']; return maReferenceManyLinkColumn; }); diff --git a/src/javascripts/ng-admin/Crud/form/FormController.js b/src/javascripts/ng-admin/Crud/form/FormController.js index ca7bcbb2..90ac937b 100644 --- a/src/javascripts/ng-admin/Crud/form/FormController.js +++ b/src/javascripts/ng-admin/Crud/form/FormController.js @@ -134,7 +134,7 @@ define(function () { this.entity = undefined; }; - FormController.$inject = ['$scope', '$location', '$filter', 'CreateQueries', 'UpdateQueries', 'Validator', 'NgAdminConfiguration', 'progression', 'notification', 'view', 'entry']; + FormController.$inject = ['$scope', '$location', '$filter', 'CreateQueries', 'UpdateQueries', 'Validator', 'NgAdmin', 'progression', 'notification', 'view', 'entry']; return FormController; }); diff --git a/src/javascripts/ng-admin/Crud/repository/CreateQueries.js b/src/javascripts/ng-admin/Crud/repository/CreateQueries.js index 13ff43cc..7065ffbd 100644 --- a/src/javascripts/ng-admin/Crud/repository/CreateQueries.js +++ b/src/javascripts/ng-admin/Crud/repository/CreateQueries.js @@ -32,7 +32,7 @@ define(function (require) { }); }; - CreateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration']; + CreateQueries.$inject = ['$q', 'Restangular', 'NgAdmin']; return CreateQueries; }); diff --git a/src/javascripts/ng-admin/Crud/repository/DeleteQueries.js b/src/javascripts/ng-admin/Crud/repository/DeleteQueries.js index 1e1eddb1..bafc06e0 100644 --- a/src/javascripts/ng-admin/Crud/repository/DeleteQueries.js +++ b/src/javascripts/ng-admin/Crud/repository/DeleteQueries.js @@ -29,7 +29,7 @@ define(function (require) { .customDELETE(); }; - DeleteQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration']; + DeleteQueries.$inject = ['$q', 'Restangular', 'NgAdmin']; return DeleteQueries; }); diff --git a/src/javascripts/ng-admin/Crud/repository/Queries.js b/src/javascripts/ng-admin/Crud/repository/Queries.js index 359a209c..4880cfc2 100644 --- a/src/javascripts/ng-admin/Crud/repository/Queries.js +++ b/src/javascripts/ng-admin/Crud/repository/Queries.js @@ -18,7 +18,7 @@ define(function () { this.Restangular.setFullResponse(true); // To get also the headers } - Queries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration']; + Queries.$inject = ['$q', 'Restangular', 'NgAdmin']; return Queries; }); diff --git a/src/javascripts/ng-admin/Crud/repository/RetrieveQueries.js b/src/javascripts/ng-admin/Crud/repository/RetrieveQueries.js index f832cecd..ef4b707d 100644 --- a/src/javascripts/ng-admin/Crud/repository/RetrieveQueries.js +++ b/src/javascripts/ng-admin/Crud/repository/RetrieveQueries.js @@ -287,7 +287,7 @@ define(function (require) { return entry; }; - RetrieveQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration']; + RetrieveQueries.$inject = ['$q', 'Restangular', 'NgAdmin']; return RetrieveQueries; }); diff --git a/src/javascripts/ng-admin/Crud/repository/UpdateQueries.js b/src/javascripts/ng-admin/Crud/repository/UpdateQueries.js index 0fe29dd3..a5dc98bd 100644 --- a/src/javascripts/ng-admin/Crud/repository/UpdateQueries.js +++ b/src/javascripts/ng-admin/Crud/repository/UpdateQueries.js @@ -35,7 +35,7 @@ define(function (require) { }); }; - UpdateQueries.$inject = ['$q', 'Restangular', 'NgAdminConfiguration']; + UpdateQueries.$inject = ['$q', 'Restangular', 'NgAdmin']; return UpdateQueries; }); diff --git a/src/javascripts/ng-admin/Crud/routing.js b/src/javascripts/ng-admin/Crud/routing.js index 284c13c9..2e5d95c2 100644 --- a/src/javascripts/ng-admin/Crud/routing.js +++ b/src/javascripts/ng-admin/Crud/routing.js @@ -10,7 +10,7 @@ define(function (require) { deleteTemplate = require('text!./delete/delete.html'); function templateProvider(viewName, defaultView) { - return ['$stateParams', 'NgAdminConfiguration', function ($stateParams, Configuration) { + return ['$stateParams', 'NgAdmin', function ($stateParams, Configuration) { var customTemplate; var view = Configuration().getViewByEntityAndType($stateParams.entity, viewName); customTemplate = view.template(); @@ -22,7 +22,7 @@ define(function (require) { } function viewProvider(viewName) { - return ['$stateParams', 'NgAdminConfiguration', function ($stateParams, Configuration) { + return ['$stateParams', 'NgAdmin', function ($stateParams, Configuration) { var view = Configuration().getViewByEntityAndType($stateParams.entity, viewName); if (!view.isEnabled()) { throw new Error('The ' + viewName + ' is disabled for this entity'); diff --git a/src/javascripts/ng-admin/Main/MainModule.js b/src/javascripts/ng-admin/Main/MainModule.js index 33932b35..dde99ad8 100644 --- a/src/javascripts/ng-admin/Main/MainModule.js +++ b/src/javascripts/ng-admin/Main/MainModule.js @@ -17,7 +17,7 @@ define(function (require) { MainModule.service('PanelBuilder', require('ng-admin/Main/component/service/PanelBuilder')); MainModule.service('Validator', require('ng-admin/Main/component/service/Validator')); - MainModule.provider('NgAdminConfiguration', require('ng-admin/Main/component/provider/NgAdminConfiguration')); + MainModule.provider('NgAdmin', require('ng-admin/Main/component/provider/NgAdmin')); MainModule.filter('enabled', require('ng-admin/Main/component/filter/Enabled')); MainModule.filter('orderElement', require('ng-admin/Main/component/filter/OrderElement')); diff --git a/src/javascripts/ng-admin/Main/component/controller/AppController.js b/src/javascripts/ng-admin/Main/component/controller/AppController.js index 4ced4769..d2cf9232 100644 --- a/src/javascripts/ng-admin/Main/component/controller/AppController.js +++ b/src/javascripts/ng-admin/Main/component/controller/AppController.js @@ -7,7 +7,7 @@ define(function () { * * @param {$scope} $scope * @param {$location} $location - * @param {NgAdminConfiguration} Configuration + * @param {NgAdmin} Configuration * @constructor */ var AppController = function ($scope, $location, Configuration) { @@ -26,7 +26,7 @@ define(function () { this.$scope = undefined; }; - AppController.$inject = ['$scope', '$location', 'NgAdminConfiguration']; + AppController.$inject = ['$scope', '$location', 'NgAdmin']; return AppController; }); diff --git a/src/javascripts/ng-admin/Main/component/controller/SidebarController.js b/src/javascripts/ng-admin/Main/component/controller/SidebarController.js index 1df2f336..b70e768d 100644 --- a/src/javascripts/ng-admin/Main/component/controller/SidebarController.js +++ b/src/javascripts/ng-admin/Main/component/controller/SidebarController.js @@ -53,7 +53,7 @@ define(function () { this.$filter = undefined; }; - SidebarController.$inject = ['$scope', '$location', '$sce', '$filter', 'NgAdminConfiguration']; + SidebarController.$inject = ['$scope', '$location', '$sce', '$filter', 'NgAdmin']; return SidebarController; }); diff --git a/src/javascripts/ng-admin/Main/component/provider/NgAdmin.js b/src/javascripts/ng-admin/Main/component/provider/NgAdmin.js new file mode 100644 index 00000000..0627cd65 --- /dev/null +++ b/src/javascripts/ng-admin/Main/component/provider/NgAdmin.js @@ -0,0 +1,24 @@ +/*global define*/ + +define(function () { + 'use strict'; + + function NgAdmin() { + this.config = null; + } + + NgAdmin.prototype.configure = function (config) { + this.config = config; + }; + + NgAdmin.prototype.$get = function () { + var config = this.config; + return function () { + return config; + }; + }; + + NgAdmin.$inject = []; + + return NgAdmin; +}); diff --git a/src/javascripts/ng-admin/Main/component/provider/NgAdminConfiguration.js b/src/javascripts/ng-admin/Main/component/provider/NgAdminConfiguration.js deleted file mode 100644 index 329b436c..00000000 --- a/src/javascripts/ng-admin/Main/component/provider/NgAdminConfiguration.js +++ /dev/null @@ -1,26 +0,0 @@ -/*global define*/ - -define(function () { - 'use strict'; - - function NgAdminConfiguration() { - this.config = null; - this.fieldTypes = {}; - this.fieldViews = {}; - } - - NgAdminConfiguration.prototype.configure = function (config) { - this.config = config; - }; - - NgAdminConfiguration.prototype.$get = function () { - var config = this.config; - return function () { - return config; - }; - }; - - NgAdminConfiguration.$inject = []; - - return NgAdminConfiguration; -}); diff --git a/src/javascripts/ng-admin/Main/component/service/PanelBuilder.js b/src/javascripts/ng-admin/Main/component/service/PanelBuilder.js index fb6fa5a7..1d7e5f5b 100644 --- a/src/javascripts/ng-admin/Main/component/service/PanelBuilder.js +++ b/src/javascripts/ng-admin/Main/component/service/PanelBuilder.js @@ -66,7 +66,7 @@ define(function () { }); }; - PanelBuilder.$inject = ['$q', '$filter', '$location', 'RetrieveQueries', 'NgAdminConfiguration']; + PanelBuilder.$inject = ['$q', '$filter', '$location', 'RetrieveQueries', 'NgAdmin']; return PanelBuilder; }); diff --git a/src/javascripts/ng-admin/Main/config/factories.js b/src/javascripts/ng-admin/Main/config/factories.js index 4580773b..7cf3c69c 100644 --- a/src/javascripts/ng-admin/Main/config/factories.js +++ b/src/javascripts/ng-admin/Main/config/factories.js @@ -27,7 +27,7 @@ define(function (require) { nga.registerFieldType('wysiwyg', require('ng-admin/Main/component/service/config/fieldTypes/WysiwygField')); } - factories.$inject = ['NgAdminConfigurationProvider']; + factories.$inject = ['NgAdminProvider']; return factories; }); diff --git a/src/javascripts/ng-admin/Main/config/routing.js b/src/javascripts/ng-admin/Main/config/routing.js index 31d4ef9f..eca31a49 100644 --- a/src/javascripts/ng-admin/Main/config/routing.js +++ b/src/javascripts/ng-admin/Main/config/routing.js @@ -12,7 +12,7 @@ define(function (require) { abstract: true, controller: 'AppController', controllerAs: 'appController', - templateProvider: ['NgAdminConfiguration', function(Configuration) { + templateProvider: ['NgAdmin', function(Configuration) { return Configuration().layout() || layoutTemplate; }] }); diff --git a/src/javascripts/ng-admin/es6/lib/Utils/arrayUtils.js b/src/javascripts/ng-admin/es6/lib/Utils/arrayUtils.js deleted file mode 100644 index 1af1988d..00000000 --- a/src/javascripts/ng-admin/es6/lib/Utils/arrayUtils.js +++ /dev/null @@ -1,20 +0,0 @@ -const flatten = (arr) => { - if (!arr) { - return null; - } - - var [car, ...cdr] = arr; - if (car === undefined) { - return []; - } - - if (Array.isArray(car)) { - return [...flatten(car), ...flatten(cdr)]; - } - - return [car, ...flatten(cdr)]; -}; - -export default { - flatten: flatten -}; diff --git a/src/javascripts/ng-admin/es6/lib/View/View.js b/src/javascripts/ng-admin/es6/lib/View/View.js index 2dd70720..ce1f70a5 100644 --- a/src/javascripts/ng-admin/es6/lib/View/View.js +++ b/src/javascripts/ng-admin/es6/lib/View/View.js @@ -1,5 +1,4 @@ import Entry from "../Entry"; -import arrayUtils from "../Utils/arrayUtils"; class View { constructor(name) { @@ -80,52 +79,40 @@ class View { return this; } + + /* + * Supports various syntax + * fields([ Field1, Field2 ]) + * fields(Field1, Field2) + * fields([Field1, {Field2, Field3}]) + * fields(Field1, {Field2, Field3}) + * fields({Field2, Field3}) + */ fields() { if (!arguments.length) return View._indexFieldsByName(this._fields); - for (let i = 0, c = arguments.length ; i < c ; i++) { - let argument = this._fieldify(arguments[i]); - - switch (argument.constructor.name) { - case 'Field': - this._fields.push(argument); - break; - - case 'Object': - for (var fieldName in argument) { - this._fields.push(argument[fieldName]); - } - break; - - case 'Array': - this._fields = this._fields.concat(arrayUtils.flatten(argument)); - break; - } - } + [].slice.call(arguments).map(function(argument) { + View.flatten(argument).map(arg => this.addField(arg)); + }, this) return this; } - _fieldify(arr) { - if (!Array.isArray(arr)) { - return arr; - } - - var result = []; - for (let i = 0, c = arr.length ; i < c ; i++) { - var element = arr[i] - if (element.constructor.name === 'Object') { - for (let fieldName in element) { - result.push(this._fieldify(element[fieldName])); - } - - continue; + static flatten(arg) { + if (arg.constructor.name === 'Object') { + let result = []; + for (let fieldName in arg) { + result = result.concat(View.flatten(arg[fieldName])); } - - result.push(element); + return result; } - - return result; + if (Array.isArray(arg)) { + return arg.reduce(function(previous, current) { + return previous.concat(View.flatten(current)) + }, []); + } + // arg is a scalar + return [arg]; } get type() { diff --git a/src/javascripts/ng-admin/es6/tests/lib/Utils/arrayUtilsTest.js b/src/javascripts/ng-admin/es6/tests/lib/Utils/arrayUtilsTest.js deleted file mode 100644 index da82ca3c..00000000 --- a/src/javascripts/ng-admin/es6/tests/lib/Utils/arrayUtilsTest.js +++ /dev/null @@ -1,18 +0,0 @@ -var assert = require('chai').assert; - -import arrayUtils from "../../../lib/Utils/arrayUtils"; - -describe('Array Utils', function() { - describe('.flatten', function() { - it('should return null if no array given', function() { - assert.equal(arrayUtils.flatten(), null); - }); - - it('should flatten array effectively', function() { - var arr = [1, 2, ["hello", "world"], { name: "John" }]; - var flattenedArray = arrayUtils.flatten(arr); - - assert.deepEqual(flattenedArray, [1, 2, "hello", "world", { name: "John" }]); - }); - }); -}); From 735014b9030003dd0213df27e261529665e04bda Mon Sep 17 00:00:00 2001 From: Francois Zaninotto Date: Tue, 10 Mar 2015 15:29:01 +0100 Subject: [PATCH 2/2] Fix test on maDateField --- src/javascripts/test/unit/Crud/field/maDateFieldSpec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/javascripts/test/unit/Crud/field/maDateFieldSpec.js b/src/javascripts/test/unit/Crud/field/maDateFieldSpec.js index a52bc0c9..78c06cf6 100644 --- a/src/javascripts/test/unit/Crud/field/maDateFieldSpec.js +++ b/src/javascripts/test/unit/Crud/field/maDateFieldSpec.js @@ -45,11 +45,11 @@ define(function (require) { it("should contain the bounded value", function () { scope.field = new DateField(); - var now = new Date(); + var now = '2015-03-05'; scope.value = now; var element = $compile(directiveUsage)(scope); scope.$digest(); - expect(element.find('input').eq(0).val()).toBe(now.toString()); + expect(element.find('input').eq(0).val()).toBe(now); }); });