diff --git a/src/app/components/settings.js b/src/app/components/settings.js
index 532b2e2b133..5bb1280130a 100644
--- a/src/app/components/settings.js
+++ b/src/app/components/settings.js
@@ -25,7 +25,8 @@ function (_, crypto) {
playlist_timespan : "1m",
unsaved_changes_warning : true,
search : { max_results: 100 },
- admin : {}
+ admin : {},
+ appSubUrl: ""
};
// This initializes a new hash on purpose, to avoid adding parameters to
diff --git a/src/app/controllers/grafanaCtrl.js b/src/app/controllers/grafanaCtrl.js
index 85ba2bbbcaf..3352e1a672e 100644
--- a/src/app/controllers/grafanaCtrl.js
+++ b/src/app/controllers/grafanaCtrl.js
@@ -16,6 +16,7 @@ function (angular, config, _, $, store) {
$rootScope.profilingEnabled = store.getBool('profilingEnabled');
$rootScope.performance = { loadStart: new Date().getTime() };
+ $rootScope.appSubUrl = config.appSubUrl;
$scope.init = function() {
$scope._ = _;
diff --git a/src/app/controllers/pro/loginCtrl.js b/src/app/controllers/pro/loginCtrl.js
index 7146067d649..f193aba0047 100644
--- a/src/app/controllers/pro/loginCtrl.js
+++ b/src/app/controllers/pro/loginCtrl.js
@@ -1,12 +1,13 @@
define([
'angular',
+ 'config',
],
-function (angular) {
+function (angular, config) {
'use strict';
var module = angular.module('grafana.controllers');
- module.controller('LoginCtrl', function($scope, $http, $location, $routeParams, alertSrv) {
+ module.controller('LoginCtrl', function($scope, backendSrv, $location, $routeParams, alertSrv) {
$scope.loginModel = {};
$scope.grafana.sidemenu = false;
@@ -17,14 +18,10 @@ function (angular) {
};
$scope.logout = function() {
- $http.post('/logout').then(function() {
-
+ backendSrv.post('/logout').then(function() {
alertSrv.set('Logged out!', '', 'success', 3000);
$scope.appEvent('logged-out');
$location.search({});
-
- }, function() {
- alertSrv.set('Logout failed:', 'Unexpected error', 'error', 3000);
});
};
@@ -35,16 +32,9 @@ function (angular) {
return;
}
- $http.post('/login', $scope.loginModel).then(function(results) {
- $scope.appEvent('logged-in', results.data.user);
- window.location.href = '/';
- }, function(err) {
- if (err.status === 401) {
- $scope.loginError = "Username or password is incorrect";
- }
- else {
- $scope.loginError = "Unexpected error";
- }
+ backendSrv.post('/login', $scope.loginModel).then(function(results) {
+ $scope.appEvent('logged-in', results.user);
+ window.location.href = config.appSubUrl + '/';
});
};
diff --git a/src/app/partials/pro/sidemenu.html b/src/app/partials/pro/sidemenu.html
index 46dfd33903b..0821f7a411e 100644
--- a/src/app/partials/pro/sidemenu.html
+++ b/src/app/partials/pro/sidemenu.html
@@ -8,11 +8,11 @@
Logout
-
-
@@ -20,19 +20,19 @@
Alerts
-
-
-
-
diff --git a/src/app/routes/backend/dashboard.js b/src/app/routes/backend/dashboard.js
index e90014553a4..c14c6b2be80 100644
--- a/src/app/routes/backend/dashboard.js
+++ b/src/app/routes/backend/dashboard.js
@@ -12,17 +12,17 @@ function (angular, store) {
$routeProvider
.when('/', {
- templateUrl: '/app/partials/dashboard.html',
+ templateUrl: 'app/partials/dashboard.html',
controller : 'DashFromDBProvider',
reloadOnSearch: false,
})
.when('/dashboard/db/:id', {
- templateUrl: '/app/partials/dashboard.html',
+ templateUrl: 'app/partials/dashboard.html',
controller : 'DashFromDBProvider',
reloadOnSearch: false,
})
.when('/dashboard/temp/:id', {
- templateUrl: '/app/partials/dashboard.html',
+ templateUrl: 'app/partials/dashboard.html',
controller : 'DashFromDBProvider',
reloadOnSearch: false,
})
diff --git a/src/app/services/backendSrv.js b/src/app/services/backendSrv.js
index bad3412dd3f..6f5859c8a29 100644
--- a/src/app/services/backendSrv.js
+++ b/src/app/services/backendSrv.js
@@ -1,8 +1,9 @@
define([
'angular',
'lodash',
+ 'config',
],
-function (angular, _) {
+function (angular, _, config) {
'use strict';
var module = angular.module('grafana.services');
@@ -27,7 +28,7 @@ function (angular, _) {
this.request = function(options) {
var httpOptions = {
- url: options.url,
+ url: config.appSubUrl + options.url,
method: options.method,
data: options.data
};
diff --git a/src/app/services/grafanaDatasource.js b/src/app/services/grafanaDatasource.js
index 8a52dc2c083..d20a221b416 100644
--- a/src/app/services/grafanaDatasource.js
+++ b/src/app/services/grafanaDatasource.js
@@ -7,7 +7,7 @@ function (angular, _) {
var module = angular.module('grafana.services');
- module.factory('GrafanaDatasource', function($q, $http) {
+ module.factory('GrafanaDatasource', function($q, backendSrv) {
function GrafanaDatasource() {
this.type = 'grafana';
@@ -21,19 +21,13 @@ function (angular, _) {
url = '/temp/' + id;
}
- return $http.get('/api/dashboards/' + id)
- .then(function(result) {
- if (result.data) {
- return angular.fromJson(result.data);
+ return backendSrv.get('/api/dashboards/' + id)
+ .then(function(data) {
+ if (data) {
+ return angular.fromJson(data);
} else {
return false;
}
- }, function(data) {
- if(data.status === 0) {
- throw "Could not contact Elasticsearch. Please ensure that Elasticsearch is reachable from your browser.";
- } else {
- throw "Could not find dashboard " + id;
- }
});
};
@@ -43,34 +37,28 @@ function (angular, _) {
dashboard.id = null;
}
- return $http.post('/api/dashboard/', { dashboard: dashboard })
- .then(function(result) {
- return { title: dashboard.title, url: '/dashboard/db/' + result.data.slug };
- }, function(data) {
- throw "Failed to search: " + data;
+ return backendSrv.post('/api/dashboard/', { dashboard: dashboard })
+ .then(function(data) {
+ return { title: dashboard.title, url: '/dashboard/db/' + data.slug };
});
};
GrafanaDatasource.prototype.deleteDashboard = function(id) {
- return $http({ method: 'DELETE', url: '/api/dashboard/' + id })
- .then(function(result) {
- return result.data.title;
- }, function(err) {
- throw err.data;
+ return backendSrv.delete('/api/dashboard/' + id)
+ .then(function(data) {
+ return data.title;
});
};
GrafanaDatasource.prototype.searchDashboards = function(query) {
- return $http.get('/api/search/', { params: { q: query } })
- .then(function(results) {
+ return backendSrv.get('/api/search/', { params: { q: query } })
+ .then(function(data) {
var hits = { dashboards: [], tags: [] };
- hits.dashboards = _.map(results.data, function(item) {
+ hits.dashboards = _.map(data, function(item) {
item.id = item.slug;
return item;
});
return hits;
- }, function(data) {
- throw "Failed to search: " + data;
});
};
diff --git a/src/views/index.html b/src/views/index.html
index 3508ac60071..eb3152b395a 100644
--- a/src/views/index.html
+++ b/src/views/index.html
@@ -52,7 +52,7 @@