diff --git a/pkg/api/api.go b/pkg/api/api.go
index 2b1eaa714e3..f14802d2a70 100644
--- a/pkg/api/api.go
+++ b/pkg/api/api.go
@@ -56,6 +56,7 @@ func Register(r *macaron.Macaron) {
r.Get("/dashboard/*", reqSignedIn, Index)
r.Get("/dashboard-solo/*", reqSignedIn, Index)
r.Get("/import/dashboard", reqSignedIn, Index)
+ r.Get("/dashboards/*", reqSignedIn, Index)
r.Get("/playlists/", reqSignedIn, Index)
r.Get("/playlists/*", reqSignedIn, Index)
diff --git a/pkg/api/index.go b/pkg/api/index.go
index 53538fd2775..b921c9d17c6 100644
--- a/pkg/api/index.go
+++ b/pkg/api/index.go
@@ -65,7 +65,8 @@ func setIndexViewData(c *middleware.Context) (*dtos.IndexViewData, error) {
if c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR {
dashboardChildNavs = append(dashboardChildNavs, &dtos.NavLink{Divider: true})
dashboardChildNavs = append(dashboardChildNavs, &dtos.NavLink{Text: "New", Icon: "fa fa-plus", Url: setting.AppSubUrl + "/dashboard/new"})
- dashboardChildNavs = append(dashboardChildNavs, &dtos.NavLink{Text: "Import", Icon: "fa fa-download", Url: setting.AppSubUrl + "/import/dashboard"})
+ dashboardChildNavs = append(dashboardChildNavs, &dtos.NavLink{Text: "Import", Icon: "fa fa-download", Url: setting.AppSubUrl + "/dashboard/new/?editview=import"})
+ dashboardChildNavs = append(dashboardChildNavs, &dtos.NavLink{Text: "Dashboard list", Icon: "fa fa-list", Url: setting.AppSubUrl + "/dashboards/list"})
}
data.MainNavLinks = append(data.MainNavLinks, &dtos.NavLink{
diff --git a/public/app/core/routes/dashboard_loaders.js b/public/app/core/routes/dashboard_loaders.js
index 61cdf32c128..97f7213850d 100644
--- a/public/app/core/routes/dashboard_loaders.js
+++ b/public/app/core/routes/dashboard_loaders.js
@@ -25,18 +25,6 @@ function (coreModule) {
});
- coreModule.default.controller('DashFromImportCtrl', function($scope, $location, alertSrv) {
- if (!window.grafanaImportDashboard) {
- alertSrv.set('Not found', 'Cannot reload page with unsaved imported dashboard', 'warning', 7000);
- $location.path('');
- return;
- }
- $scope.initDashboard({
- meta: { canShare: false, canStar: false },
- dashboard: window.grafanaImportDashboard
- }, $scope);
- });
-
coreModule.default.controller('NewDashboardCtrl', function($scope) {
$scope.initDashboard({
meta: { canStar: false, canShare: false },
diff --git a/public/app/core/routes/routes.ts b/public/app/core/routes/routes.ts
index 1608a772e87..487e9deef27 100644
--- a/public/app/core/routes/routes.ts
+++ b/public/app/core/routes/routes.ts
@@ -32,20 +32,18 @@ function setupAngularRoutes($routeProvider, $locationProvider) {
controller : 'SoloPanelCtrl',
pageClass: 'page-dashboard',
})
- .when('/dashboard-import/:file', {
- templateUrl: 'public/app/partials/dashboard.html',
- controller : 'DashFromImportCtrl',
- reloadOnSearch: false,
- pageClass: 'page-dashboard',
- })
.when('/dashboard/new', {
templateUrl: 'public/app/partials/dashboard.html',
controller : 'NewDashboardCtrl',
reloadOnSearch: false,
pageClass: 'page-dashboard',
})
- .when('/import/dashboard', {
- templateUrl: 'public/app/features/dashboard/partials/import.html',
+ .when('/dashboards/list', {
+ templateUrl: 'public/app/features/dashboard/partials/dash_list.html',
+ controller : 'DashListCtrl',
+ })
+ .when('/dashboards/migrate', {
+ templateUrl: 'public/app/features/dashboard/partials/migrate.html',
controller : 'DashboardImportCtrl',
})
.when('/datasources', {
diff --git a/public/app/features/dashboard/all.js b/public/app/features/dashboard/all.js
index a7b40b14b58..15c765f2281 100644
--- a/public/app/features/dashboard/all.js
+++ b/public/app/features/dashboard/all.js
@@ -19,4 +19,5 @@ define([
'./upload',
'./import/import',
'./export/export_modal',
+ './dash_list_ctrl',
], function () {});
diff --git a/public/app/features/dashboard/dash_list_ctrl.ts b/public/app/features/dashboard/dash_list_ctrl.ts
new file mode 100644
index 00000000000..f08d7507e65
--- /dev/null
+++ b/public/app/features/dashboard/dash_list_ctrl.ts
@@ -0,0 +1,11 @@
+///