|
|
|
|
@ -1,6 +1,9 @@ |
|
|
|
|
import _ from 'lodash'; |
|
|
|
|
import coreModule from 'app/core/core_module'; |
|
|
|
|
import appEvents from 'app/core/app_events'; |
|
|
|
|
import { BackendSrv } from 'app/core/services/backend_srv'; |
|
|
|
|
import { ValidationSrv } from 'app/features/manage-dashboards'; |
|
|
|
|
import { ContextSrv } from 'app/core/services/context_srv'; |
|
|
|
|
|
|
|
|
|
export class FolderPickerCtrl { |
|
|
|
|
initialTitle: string; |
|
|
|
|
@ -24,7 +27,7 @@ export class FolderPickerCtrl { |
|
|
|
|
dashboardId?: number; |
|
|
|
|
|
|
|
|
|
/** @ngInject */ |
|
|
|
|
constructor(private backendSrv, private validationSrv, private contextSrv) { |
|
|
|
|
constructor(private backendSrv: BackendSrv, private validationSrv: ValidationSrv, private contextSrv: ContextSrv) { |
|
|
|
|
this.isEditor = this.contextSrv.isEditor; |
|
|
|
|
|
|
|
|
|
if (!this.labelClass) { |
|
|
|
|
@ -34,14 +37,14 @@ export class FolderPickerCtrl { |
|
|
|
|
this.loadInitialValue(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getOptions(query) { |
|
|
|
|
getOptions(query: string) { |
|
|
|
|
const params = { |
|
|
|
|
query: query, |
|
|
|
|
query, |
|
|
|
|
type: 'dash-folder', |
|
|
|
|
permission: 'Edit', |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return this.backendSrv.get('api/search', params).then(result => { |
|
|
|
|
return this.backendSrv.get('api/search', params).then((result: any) => { |
|
|
|
|
if ( |
|
|
|
|
this.isEditor && |
|
|
|
|
(query === '' || |
|
|
|
|
@ -70,7 +73,7 @@ export class FolderPickerCtrl { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
onFolderChange(option) { |
|
|
|
|
onFolderChange(option: { value: number; text: string }) { |
|
|
|
|
if (!option) { |
|
|
|
|
option = { value: 0, text: this.rootName }; |
|
|
|
|
} else if (option.value === -1) { |
|
|
|
|
@ -89,19 +92,19 @@ export class FolderPickerCtrl { |
|
|
|
|
.then(() => { |
|
|
|
|
this.hasValidationError = false; |
|
|
|
|
}) |
|
|
|
|
.catch(err => { |
|
|
|
|
.catch((err: any) => { |
|
|
|
|
this.hasValidationError = true; |
|
|
|
|
this.validationError = err.message; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
createFolder(evt) { |
|
|
|
|
createFolder(evt: any) { |
|
|
|
|
if (evt) { |
|
|
|
|
evt.stopPropagation(); |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return this.backendSrv.createFolder({ title: this.newFolderName }).then(result => { |
|
|
|
|
return this.backendSrv.createFolder({ title: this.newFolderName }).then((result: { title: string; id: number }) => { |
|
|
|
|
appEvents.emit('alert-success', ['Folder Created', 'OK']); |
|
|
|
|
|
|
|
|
|
this.closeCreateFolder(); |
|
|
|
|
@ -110,7 +113,7 @@ export class FolderPickerCtrl { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cancelCreateFolder(evt) { |
|
|
|
|
cancelCreateFolder(evt: any) { |
|
|
|
|
if (evt) { |
|
|
|
|
evt.stopPropagation(); |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
@ -130,12 +133,13 @@ export class FolderPickerCtrl { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private loadInitialValue() { |
|
|
|
|
const resetFolder = { text: this.initialTitle, value: null }; |
|
|
|
|
const rootFolder = { text: this.rootName, value: 0 }; |
|
|
|
|
const resetFolder: { text: string; value: any } = { text: this.initialTitle, value: null }; |
|
|
|
|
const rootFolder: { text: string; value: any } = { text: this.rootName, value: 0 }; |
|
|
|
|
|
|
|
|
|
this.getOptions('').then(result => { |
|
|
|
|
let folder; |
|
|
|
|
this.getOptions('').then((result: any[]) => { |
|
|
|
|
let folder: { text: string; value: any }; |
|
|
|
|
if (this.initialFolderId) { |
|
|
|
|
// @ts-ignore
|
|
|
|
|
folder = _.find(result, { value: this.initialFolderId }); |
|
|
|
|
} else if (this.enableReset && this.initialTitle && this.initialFolderId === null) { |
|
|
|
|
folder = resetFolder; |
|
|
|
|
|