Commit 6c736e00 by Daniel Lee

WIP: add dummy root folder to folder picker

Can move a dash from a folder back to root level as well
parent 1e865211
......@@ -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">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment