From 1c7b898b019813e0d7000b3d81b5b3e9b22be395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 1 Oct 2014 13:56:57 +0200 Subject: [PATCH] Dashboard: show error when importing dashboard json file with broken/incorrect json syntax, Closes #878 --- src/app/directives/dashUpload.js | 8 +++++++- src/app/routes/dashboard-from-db.js | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/app/directives/dashUpload.js b/src/app/directives/dashUpload.js index ba214cf19a4..889438dffc9 100644 --- a/src/app/directives/dashUpload.js +++ b/src/app/directives/dashUpload.js @@ -16,7 +16,13 @@ function (angular, kbn) { var readerOnload = function() { return function(e) { scope.$apply(function() { - window.grafanaImportDashboard = JSON.parse(e.target.result); + try { + window.grafanaImportDashboard = JSON.parse(e.target.result); + } catch (err) { + console.log(err); + scope.appEvent('alert-error', ['Import failed', 'JSON -> JS Serialization failed: ' + err.message]); + return; + } var title = kbn.slugifyForUrl(window.grafanaImportDashboard.title); $location.path('/dashboard/import/' + title); }); diff --git a/src/app/routes/dashboard-from-db.js b/src/app/routes/dashboard-from-db.js index 67c25ab4946..4cc75ddc5b5 100644 --- a/src/app/routes/dashboard-from-db.js +++ b/src/app/routes/dashboard-from-db.js @@ -31,7 +31,7 @@ function (angular) { }); - module.controller('DashFromDBProvider', function($scope, $rootScope, datasourceSrv, $routeParams, alertSrv) { + module.controller('DashFromDBProvider', function($scope, $rootScope, datasourceSrv, $routeParams) { var db = datasourceSrv.getGrafanaDB(); var isTemp = window.location.href.indexOf('dashboard/temp') !== -1; @@ -41,14 +41,14 @@ function (angular) { $scope.initDashboard(dashboard, $scope); }).then(null, function(error) { $scope.initDashboard({ title: 'Grafana'}, $scope); - alertSrv.set('Error', error, 'error'); + $scope.appEvent('alert-error', ['Dashboard load failed', error]); }); }); - module.controller('DashFromImportCtrl', function($scope, $location, alertSrv) { + module.controller('DashFromImportCtrl', function($scope, $location) { if (!window.grafanaImportDashboard) { - alertSrv.set('Not found', 'Cannot reload page with unsaved imported dashboard', 'warning', 7000); + $scope.appEvent('alert-warning', ['Dashboard load failed', 'Cannot reload unsaved imported dashboard']); $location.path(''); return; }