WIP: fix folder-picker for dashlist
This commit is contained in:
@@ -5,11 +5,13 @@ import appEvents from 'app/core/app_events';
|
||||
import _ from 'lodash';
|
||||
|
||||
export class FolderPickerCtrl {
|
||||
folders: Folder[];
|
||||
selectedOption: any;
|
||||
initialTitle: string;
|
||||
onChange: any;
|
||||
initialFolderId: number;
|
||||
labelClass: string;
|
||||
onChange: any;
|
||||
rootName = 'Root';
|
||||
|
||||
private folder: any;
|
||||
|
||||
/** @ngInject */
|
||||
constructor(private backendSrv, private $scope, private $sce) {
|
||||
@@ -17,7 +19,13 @@ export class FolderPickerCtrl {
|
||||
this.labelClass = "width-7";
|
||||
}
|
||||
|
||||
this.selectedOption = {text: this.initialTitle, value: null};
|
||||
if (this.initialFolderId > 0) {
|
||||
this.getOptions('').then(result => {
|
||||
this.folder = _.find(result, {value: this.initialFolderId});
|
||||
});
|
||||
} else {
|
||||
this.folder = {text: this.initialTitle, value: null};
|
||||
}
|
||||
}
|
||||
|
||||
getOptions(query) {
|
||||
@@ -28,37 +36,28 @@ export class FolderPickerCtrl {
|
||||
|
||||
return this.backendSrv.search(params).then(result => {
|
||||
if (query === "") {
|
||||
result.unshift({title: "Root", value: 0});
|
||||
result.unshift({title: this.rootName, value: 0});
|
||||
}
|
||||
|
||||
return _.map(result, item => {
|
||||
return {text: item.title, value: item.id};
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
folderChanged(option) {
|
||||
onFolderChange(option) {
|
||||
this.onChange({$folder: {id: option.value, title: option.text}});
|
||||
}
|
||||
}
|
||||
|
||||
export interface Folder {
|
||||
id: number;
|
||||
title: string;
|
||||
uri?: string;
|
||||
type: string;
|
||||
tags?: string[];
|
||||
isStarred?: boolean;
|
||||
parentId?: number;
|
||||
dashboards?: any;
|
||||
}
|
||||
|
||||
const template = `
|
||||
<div class="gf-form">
|
||||
<label class="gf-form-label {{ctrl.labelClass}}">Folder</label>
|
||||
<div class="dropdown">
|
||||
<gf-form-dropdown model="ctrl.selectedOption"
|
||||
<gf-form-dropdown model="ctrl.folder"
|
||||
get-options="ctrl.getOptions($query)"
|
||||
on-change="ctrl.folderChanged($option)">
|
||||
on-change="ctrl.onFolderChange($option)">
|
||||
</gf-form-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
@@ -73,8 +72,10 @@ export function folderPicker() {
|
||||
controllerAs: 'ctrl',
|
||||
scope: {
|
||||
initialTitle: "<",
|
||||
onChange: "&",
|
||||
labelClass: "@",
|
||||
initialFolderId: '<',
|
||||
labelClass: '@',
|
||||
rootName: '@',
|
||||
onChange: '&'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
</div>
|
||||
|
||||
<div class="gf-form">
|
||||
<folder-picker initial-text="ctrl.folderTitle"
|
||||
<folder-picker root-name="All"
|
||||
initial-folder-id="ctrl.panel.folderId"
|
||||
on-change="ctrl.onFolderChange($folder)"
|
||||
label-class="width-6">
|
||||
</folder-picker>
|
||||
|
||||
@@ -10,7 +10,6 @@ class DashListCtrl extends PanelCtrl {
|
||||
|
||||
groups: any[];
|
||||
modes: any[];
|
||||
folderTitle: any;
|
||||
|
||||
panelDefaults = {
|
||||
query: '',
|
||||
@@ -66,10 +65,6 @@ class DashListCtrl extends PanelCtrl {
|
||||
this.editorTabIndex = 1;
|
||||
this.modes = ['starred', 'search', 'recently viewed'];
|
||||
this.addEditorTab('Options', 'public/app/plugins/panel/dashlist/editor.html');
|
||||
|
||||
if (!this.panel.folderId) {
|
||||
this.folderTitle = "All";
|
||||
}
|
||||
}
|
||||
|
||||
onRefresh() {
|
||||
@@ -131,9 +126,8 @@ class DashListCtrl extends PanelCtrl {
|
||||
});
|
||||
}
|
||||
|
||||
onFolderChange(folder) {
|
||||
onFolderChange(folder: any) {
|
||||
this.panel.folderId = folder.id;
|
||||
this.panel.folderTitle = folder.title;
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user