From a894ce93506a3dc7d649e80389c3b1b5ee2b5ace Mon Sep 17 00:00:00 2001 From: Rajat Vig Date: Tue, 1 Sep 2015 10:22:01 -0700 Subject: [PATCH] Create a Angular Modules for Admin Dashboard This enables admin angular plugins to be developed. It will be needed for 3rd party integrators to create out of tree angular panel plugins. It also is needed for in tree plugins like admin images, system information, defaults, and flavors panel. Without this patch, all of these panels require a common parent dependency. Change-Id: I5a8232a1f1f3075f65ee742df84223aed7af3d92 Partially-Implements: blueprint ng-defaults-panel Partially implements: blueprint angularize-images-table Partially implements: blueprint plugin-sanity --- .../static/dashboard/admin/admin.module.js | 45 +++++++++++++++++++ .../dashboard/admin/admin.module.spec.js | 38 ++++++++++++++++ .../admin/static/dashboard/admin/admin.scss | 3 ++ openstack_dashboard/enabled/_2000_admin.py | 9 +++- 4 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.js create mode 100644 openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.spec.js create mode 100644 openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.scss diff --git a/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.js b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.js new file mode 100644 index 0000000000..f7ae6a6130 --- /dev/null +++ b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.js @@ -0,0 +1,45 @@ +/** + * + * 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'; + + /** + * @ngdoc horizon.dashboard.admin + * @ngModule + * + * @description + * Dashboard module to host various admin panels. + */ + angular + .module('horizon.dashboard.admin', [ + ]) + .config(config); + + config.$inject = [ + '$provide', + '$windowProvider' + ]; + + /** + * @name horizon.dashboard.admin.basePath + * @description Base path for the admin dashboard + */ + function config($provide, $windowProvider) { + var path = $windowProvider.$get().STATIC_URL + 'dashboard/admin/'; + $provide.constant('horizon.dashboard.admin.basePath', path); + } + +})(); diff --git a/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.spec.js b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.spec.js new file mode 100644 index 0000000000..d9ca3f6df4 --- /dev/null +++ b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.module.spec.js @@ -0,0 +1,38 @@ +/** + * + * 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'; + + describe('horizon.dashboard.admin', function() { + var staticUrl, basePath; + + beforeEach(module('horizon.dashboard.admin')); + + beforeEach(inject(function($injector) { + staticUrl = $injector.get('$window').STATIC_URL; + basePath = $injector.get('horizon.dashboard.admin.basePath'); + })); + + it('should exist', function() { + expect(angular.module('horizon.dashboard.admin')).toBeDefined(); + }); + + it('should set path properly', function () { + expect(basePath).toEqual(staticUrl + 'dashboard/admin/'); + }); + + }); + +})(); diff --git a/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.scss b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.scss new file mode 100644 index 0000000000..158f0f1232 --- /dev/null +++ b/openstack_dashboard/dashboards/admin/static/dashboard/admin/admin.scss @@ -0,0 +1,3 @@ +// Custom Theme Variables +@import "/custom/variables"; +@import "/dashboard/scss/variables"; \ No newline at end of file diff --git a/openstack_dashboard/enabled/_2000_admin.py b/openstack_dashboard/enabled/_2000_admin.py index 7ea4529b15..855cbda196 100644 --- a/openstack_dashboard/enabled/_2000_admin.py +++ b/openstack_dashboard/enabled/_2000_admin.py @@ -20,5 +20,12 @@ ADD_INSTALLED_APPS = [ 'openstack_dashboard.dashboards.admin', ] -ADD_JS_FILES = [ +ADD_ANGULAR_MODULES = [ + 'horizon.dashboard.admin', +] + +AUTO_DISCOVER_STATIC_FILES = True + +ADD_SCSS_FILES = [ + 'dashboard/admin/admin.scss' ]