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',