diff --git a/pkg/api/index.go b/pkg/api/index.go
index c1945906624..31e413a7ca3 100644
--- a/pkg/api/index.go
+++ b/pkg/api/index.go
@@ -96,7 +96,7 @@ func setIndexViewData(c *middleware.Context) (*dtos.IndexViewData, error) {
Children: []*dtos.NavLink{
{Text: "Dashboard", Icon: "gicon gicon-dashboard-new", Url: setting.AppSubUrl + "/dashboard/new"},
{Text: "Folder", Icon: "gicon gicon-folder-new", Url: setting.AppSubUrl + "/dashboard/new/?editview=new-folder"},
- {Text: "Import", Id: "import", Icon: "gicon gicon-dashboard-import", Url: setting.AppSubUrl + "/dashboard/import"},
+ {Text: "Import", SubTitle: "Import dashboard from file or Grafana.com", Id: "import", Icon: "gicon gicon-dashboard-import", Url: setting.AppSubUrl + "/dashboard/import"},
},
})
}
diff --git a/public/app/features/dashboard/import/dash_import.html b/public/app/features/dashboard/import/dash_import.html
deleted file mode 100644
index c617c752366..00000000000
--- a/public/app/features/dashboard/import/dash_import.html
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
-
-
-
-
-
Grafana.com Dashboard
-
-
-
-
Or paste JSON
-
-
-
-
-
-
-
-
- Options
-
-
-
-
-
-
-
-
-
-
diff --git a/public/app/features/dashboard/import/dash_import.ts b/public/app/features/dashboard/import/dash_import.ts
deleted file mode 100644
index 8f3de6adc60..00000000000
--- a/public/app/features/dashboard/import/dash_import.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-///
-
-import coreModule from 'app/core/core_module';
-import config from 'app/core/config';
-import _ from 'lodash';
-
-export class DashImportCtrl {
- step: number;
- jsonText: string;
- parseError: string;
- nameExists: boolean;
- dash: any;
- inputs: any[];
- inputsValid: boolean;
- gnetUrl: string;
- gnetError: string;
- gnetInfo: any;
-
- /** @ngInject */
- constructor(private backendSrv, private $location, private $scope, $routeParams) {
- this.step = 1;
- this.nameExists = false;
-
- // check gnetId in url
- if ($routeParams.gnetId) {
- this.gnetUrl = $routeParams.gnetId ;
- this.checkGnetDashboard();
- }
- }
-
- onUpload(dash) {
- this.dash = dash;
- this.dash.id = null;
- this.step = 2;
- this.inputs = [];
-
- if (this.dash.__inputs) {
- for (let input of this.dash.__inputs) {
- var inputModel = {
- name: input.name,
- label: input.label,
- info: input.description,
- value: input.value,
- type: input.type,
- pluginId: input.pluginId,
- options: []
- };
-
- if (input.type === 'datasource') {
- this.setDatasourceOptions(input, inputModel);
- } else if (!inputModel.info) {
- inputModel.info = 'Specify a string constant';
- }
-
- this.inputs.push(inputModel);
- }
- }
-
- this.inputsValid = this.inputs.length === 0;
- this.titleChanged();
- }
-
- setDatasourceOptions(input, inputModel) {
- var sources = _.filter(config.datasources, val => {
- return val.type === input.pluginId;
- });
-
- if (sources.length === 0) {
- inputModel.info = "No data sources of type " + input.pluginName + " found";
- } else if (!inputModel.info) {
- inputModel.info = "Select a " + input.pluginName + " data source";
- }
-
- inputModel.options = sources.map(val => {
- return {text: val.name, value: val.name};
- });
- }
-
- inputValueChanged() {
- this.inputsValid = true;
- for (let input of this.inputs) {
- if (!input.value) {
- this.inputsValid = false;
- }
- }
- }
-
- titleChanged() {
- this.backendSrv.search({query: this.dash.title}).then(res => {
- this.nameExists = false;
- for (let hit of res) {
- if (this.dash.title === hit.title) {
- this.nameExists = true;
- break;
- }
- }
- });
- }
-
- saveDashboard() {
- var inputs = this.inputs.map(input => {
- return {
- name: input.name,
- type: input.type,
- pluginId: input.pluginId,
- value: input.value
- };
- });
-
- return this.backendSrv.post('api/dashboards/import', {
- dashboard: this.dash,
- overwrite: true,
- inputs: inputs
- }).then(res => {
- this.$location.url('dashboard/' + res.importedUri);
- this.$scope.dismiss();
- });
- }
-
- loadJsonText() {
- try {
- this.parseError = '';
- var dash = JSON.parse(this.jsonText);
- this.onUpload(dash);
- } catch (err) {
- console.log(err);
- this.parseError = err.message;
- return;
- }
- }
-
- checkGnetDashboard() {
- this.gnetError = '';
-
- var match = /(^\d+$)|dashboards\/(\d+)/.exec(this.gnetUrl);
- var dashboardId;
-
- if (match && match[1]) {
- dashboardId = match[1];
- } else if (match && match[2]) {
- dashboardId = match[2];
- } else {
- this.gnetError = 'Could not find dashboard';
- }
-
- return this.backendSrv.get('api/gnet/dashboards/' + dashboardId).then(res => {
- this.gnetInfo = res;
- // store reference to grafana.com
- res.json.gnetId = res.id;
- this.onUpload(res.json);
- }).catch(err => {
- err.isHandled = true;
- this.gnetError = err.data.message || err;
- });
- }
-
- back() {
- this.gnetUrl = '';
- this.step = 1;
- this.gnetError = '';
- this.gnetInfo = '';
- }
-
-}
-
-export function dashImportDirective() {
- return {
- restrict: 'E',
- templateUrl: 'public/app/features/dashboard/import/dash_import.html',
- controller: DashImportCtrl,
- bindToController: true,
- controllerAs: 'ctrl',
- };
-}
-
-coreModule.directive('dashImport', dashImportDirective);
diff --git a/public/app/features/dashboard/partials/dashboardImport.html b/public/app/features/dashboard/partials/dashboardImport.html
index be43078d32a..b740b8f38bc 100644
--- a/public/app/features/dashboard/partials/dashboardImport.html
+++ b/public/app/features/dashboard/partials/dashboardImport.html
@@ -3,7 +3,8 @@