mirror of
https://github.com/grafana/grafana.git
synced 2024-12-02 05:29:42 -06:00
WIP: add dummy root folder to folder picker
Can move a dash from a folder back to root level as well
This commit is contained in:
parent
1e865211c9
commit
6c736e002a
@ -25,7 +25,7 @@ func init() {
|
||||
func SaveDashboard(cmd *m.SaveDashboardCommand) error {
|
||||
return inTransaction(func(sess *DBSession) error {
|
||||
dash := cmd.GetDashboardModel()
|
||||
|
||||
fmt.Printf("ParentId: %v", dash.ParentId)
|
||||
// try get existing dashboard
|
||||
var existing, sameTitle m.Dashboard
|
||||
|
||||
@ -81,7 +81,7 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
|
||||
} else {
|
||||
dash.Version += 1
|
||||
dash.Data.Set("version", dash.Version)
|
||||
affectedRows, err = sess.Id(dash.Id).Update(dash)
|
||||
affectedRows, err = sess.MustCols("parent_id").Id(dash.Id).Update(dash)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
@ -191,6 +191,46 @@ func TestDashboardDataAccess(t *testing.T) {
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
|
||||
Convey("Should be able to update dashboard and remove parentId", func() {
|
||||
cmd := m.SaveDashboardCommand{
|
||||
OrgId: 1,
|
||||
Dashboard: simplejson.NewFromAny(map[string]interface{}{
|
||||
"id": 1,
|
||||
"title": "parentId",
|
||||
"tags": []interface{}{},
|
||||
}),
|
||||
Overwrite: true,
|
||||
ParentId: 2,
|
||||
}
|
||||
|
||||
err := SaveDashboard(&cmd)
|
||||
So(err, ShouldBeNil)
|
||||
So(cmd.Result.ParentId, ShouldEqual, 2)
|
||||
|
||||
cmd = m.SaveDashboardCommand{
|
||||
OrgId: 1,
|
||||
Dashboard: simplejson.NewFromAny(map[string]interface{}{
|
||||
"id": 1,
|
||||
"title": "parentId",
|
||||
"tags": []interface{}{},
|
||||
}),
|
||||
ParentId: 0,
|
||||
Overwrite: true,
|
||||
}
|
||||
|
||||
err = SaveDashboard(&cmd)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
query := m.GetDashboardQuery{
|
||||
Slug: cmd.Result.Slug,
|
||||
OrgId: 1,
|
||||
}
|
||||
|
||||
err = GetDashboard(&query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.ParentId, ShouldEqual, 0)
|
||||
})
|
||||
|
||||
Convey("Should be able to get dashboard tags", func() {
|
||||
query := m.GetDashboardTagsQuery{OrgId: 1}
|
||||
|
||||
|
@ -6,13 +6,14 @@ import _ from 'lodash';
|
||||
|
||||
export class FolderPickerCtrl {
|
||||
dashboard: any;
|
||||
folders: any[];
|
||||
folders: Folder[];
|
||||
selectedFolder: number;
|
||||
|
||||
/** @ngInject */
|
||||
constructor(private backendSrv, private $scope, $sce) {
|
||||
this.get(this.dashboard.id);
|
||||
this.selectedFolder = this.dashboard.meta.parentId;
|
||||
this.folders = [{id: 0, title: 'Root', type: 'dash-folder'}];
|
||||
}
|
||||
|
||||
get(dashboardId: number) {
|
||||
@ -21,17 +22,26 @@ export class FolderPickerCtrl {
|
||||
};
|
||||
|
||||
return this.backendSrv.search(params).then(result => {
|
||||
this.folders = result;
|
||||
this.folders.push(...result);
|
||||
});
|
||||
}
|
||||
|
||||
folderChanged() {
|
||||
if (this.selectedFolder > 0) {
|
||||
this.dashboard.parentId = this.selectedFolder;
|
||||
}
|
||||
this.dashboard.parentId = this.selectedFolder;
|
||||
}
|
||||
}
|
||||
|
||||
export interface Folder {
|
||||
id: number;
|
||||
title: string;
|
||||
uri?: string;
|
||||
type: string;
|
||||
tags?: string[];
|
||||
isStarred?: boolean;
|
||||
parentId?: number;
|
||||
dashboards?: any;
|
||||
}
|
||||
|
||||
export function folderPicker() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
@ -45,7 +45,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<folder-picker dashboard="dashboard"></folder-picker>
|
||||
<folder-picker ng-hide="dashboardMeta.isFolder" dashboard="dashboard"></folder-picker>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
|
Loading…
Reference in New Issue
Block a user