WIP: fix folder-picker for dashlist

This commit is contained in:
Daniel Lee
2017-06-21 01:07:14 +02:00
parent cb8b5c0d42
commit ca1f429831
3 changed files with 24 additions and 28 deletions
@@ -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>
+1 -7
View File
@@ -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();
}
}