diff --git a/public/app/app.js b/public/app/app.js index 7bd8a086b74..022d972511a 100644 --- a/public/app/app.js +++ b/public/app/app.js @@ -74,7 +74,6 @@ function (angular, $, _, appLevelRequire) { 'features/all', 'controllers/all', 'components/partials', - 'routes/all', ]; app.boot = function() { diff --git a/public/app/core/core.ts b/public/app/core/core.ts index 609059fc8e9..039b232dbf6 100644 --- a/public/app/core/core.ts +++ b/public/app/core/core.ts @@ -14,11 +14,12 @@ /// /// /// +/// export * from './directives/array_join' export * from './directives/give_focus' -export * from './routes/module_loader' +export * from './routes/bundle_loader' export * from './filters/filters' diff --git a/public/app/core/core_module.ts b/public/app/core/core_module.ts index 1f6a02c79d9..926036c5149 100644 --- a/public/app/core/core_module.ts +++ b/public/app/core/core_module.ts @@ -2,4 +2,4 @@ import angular = require('angular'); -export = angular.module('grafana.core', []); +export = angular.module('grafana.core', ['ngRoute']); diff --git a/public/app/routes/all.js b/public/app/core/routes/all.js similarity index 87% rename from public/app/routes/all.js rename to public/app/core/routes/all.js index cdfdf0daf37..a16af0836dd 100644 --- a/public/app/routes/all.js +++ b/public/app/core/routes/all.js @@ -1,15 +1,16 @@ define([ 'angular', - '../core/core', - './dashLoadControllers', -], function(angular, core) { + '../core_module', + './bundle_loader', + './dashboard_loaders', +], function(angular, coreModule, BundleLoader) { "use strict"; - var module = angular.module('grafana.routes'); - - module.config(function($routeProvider, $locationProvider) { + coreModule.config(function($routeProvider, $locationProvider) { $locationProvider.html5Mode(true); + var loadOrgBundle = new BundleLoader.BundleLoader('features/org/all'); + $routeProvider .when('/', { templateUrl: 'app/partials/dashboard.html', @@ -42,37 +43,37 @@ define([ .when('/datasources', { templateUrl: 'app/features/org/partials/datasources.html', controller : 'DataSourcesCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/datasources/edit/:id', { templateUrl: 'app/features/org/partials/datasourceEdit.html', controller : 'DataSourceEditCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/datasources/new', { templateUrl: 'app/features/org/partials/datasourceEdit.html', controller : 'DataSourceEditCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/org', { templateUrl: 'app/features/org/partials/orgDetails.html', controller : 'OrgDetailsCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/org/new', { templateUrl: 'app/features/org/partials/newOrg.html', controller : 'NewOrgCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/org/users', { templateUrl: 'app/features/org/partials/orgUsers.html', controller : 'OrgUsersCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/org/apikeys', { templateUrl: 'app/features/org/partials/orgApiKeys.html', controller : 'OrgApiKeysCtrl', - resolve: new core.ModuleLoader("features/org/all"), + resolve: loadOrgBundle, }) .when('/profile', { templateUrl: 'app/features/profile/partials/profile.html', diff --git a/public/app/core/routes/bundle_loader.ts b/public/app/core/routes/bundle_loader.ts new file mode 100644 index 00000000000..6f132d65619 --- /dev/null +++ b/public/app/core/routes/bundle_loader.ts @@ -0,0 +1,23 @@ +/// + +export class BundleLoader { + lazy: any; + loadingDefer: any; + + constructor(bundleName) { + this.lazy = ["$q", "$route", "$rootScope", ($q, $route, $rootScope) => { + if (this.loadingDefer) { + return this.loadingDefer.promise; + } + + this.loadingDefer = $q.defer(); + + require([bundleName], () => { + this.loadingDefer.resolve(); + }); + + return this.loadingDefer.promise; + }]; + + } +} diff --git a/public/app/routes/dashLoadControllers.js b/public/app/core/routes/dashboard_loaders.js similarity index 73% rename from public/app/routes/dashLoadControllers.js rename to public/app/core/routes/dashboard_loaders.js index 9741824dbce..e8a9b80237f 100644 --- a/public/app/routes/dashLoadControllers.js +++ b/public/app/core/routes/dashboard_loaders.js @@ -1,16 +1,10 @@ define([ - 'angular', - 'lodash', - 'kbn', - 'moment', - 'jquery', + '../core_module', ], -function (angular) { +function (coreModule) { "use strict"; - var module = angular.module('grafana.routes'); - - module.controller('LoadDashboardCtrl', function($scope, $routeParams, dashboardLoaderSrv, backendSrv) { + coreModule.controller('LoadDashboardCtrl', function($scope, $routeParams, dashboardLoaderSrv, backendSrv) { if (!$routeParams.slug) { backendSrv.get('/api/dashboards/home').then(function(result) { @@ -27,7 +21,7 @@ function (angular) { }); - module.controller('DashFromImportCtrl', function($scope, $location, alertSrv) { + coreModule.controller('DashFromImportCtrl', function($scope, $location, alertSrv) { if (!window.grafanaImportDashboard) { alertSrv.set('Not found', 'Cannot reload page with unsaved imported dashboard', 'warning', 7000); $location.path(''); @@ -39,7 +33,7 @@ function (angular) { }, $scope); }); - module.controller('NewDashboardCtrl', function($scope) { + coreModule.controller('NewDashboardCtrl', function($scope) { $scope.initDashboard({ meta: { canStar: false, canShare: false }, dashboard: { diff --git a/public/app/core/routes/module_loader.ts b/public/app/core/routes/module_loader.ts deleted file mode 100644 index 4cc4c39473d..00000000000 --- a/public/app/core/routes/module_loader.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// - -export class ModuleLoader { - lazy: any; - - constructor(moduleName) { - - this.lazy = ["$q", "$route", "$rootScope", function($q, $route, $rootScope) { - var defered = $q.defer(); - - require([moduleName], function () { - defered.resolve(); - }); - - return defered.promise; - }]; - - } -} diff --git a/tasks/options/requirejs.js b/tasks/options/requirejs.js index 6f7d8d83cc3..79da0e7d506 100644 --- a/tasks/options/requirejs.js +++ b/tasks/options/requirejs.js @@ -58,7 +58,6 @@ module.exports = function(config,grunt) { 'services/all', 'features/all', 'controllers/all', - 'routes/all', 'components/partials', // bundle the datasources 'plugins/datasource/grafana/datasource',