mirror of
https://github.com/grafana/grafana.git
synced 2024-12-02 13:39:19 -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 {
|
func SaveDashboard(cmd *m.SaveDashboardCommand) error {
|
||||||
return inTransaction(func(sess *DBSession) error {
|
return inTransaction(func(sess *DBSession) error {
|
||||||
dash := cmd.GetDashboardModel()
|
dash := cmd.GetDashboardModel()
|
||||||
|
fmt.Printf("ParentId: %v", dash.ParentId)
|
||||||
// try get existing dashboard
|
// try get existing dashboard
|
||||||
var existing, sameTitle m.Dashboard
|
var existing, sameTitle m.Dashboard
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
|
|||||||
} else {
|
} else {
|
||||||
dash.Version += 1
|
dash.Version += 1
|
||||||
dash.Data.Set("version", dash.Version)
|
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 {
|
if err != nil {
|
||||||
|
@ -191,6 +191,46 @@ func TestDashboardDataAccess(t *testing.T) {
|
|||||||
So(err, ShouldNotBeNil)
|
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() {
|
Convey("Should be able to get dashboard tags", func() {
|
||||||
query := m.GetDashboardTagsQuery{OrgId: 1}
|
query := m.GetDashboardTagsQuery{OrgId: 1}
|
||||||
|
|
||||||
|
@ -6,13 +6,14 @@ import _ from 'lodash';
|
|||||||
|
|
||||||
export class FolderPickerCtrl {
|
export class FolderPickerCtrl {
|
||||||
dashboard: any;
|
dashboard: any;
|
||||||
folders: any[];
|
folders: Folder[];
|
||||||
selectedFolder: number;
|
selectedFolder: number;
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
constructor(private backendSrv, private $scope, $sce) {
|
constructor(private backendSrv, private $scope, $sce) {
|
||||||
this.get(this.dashboard.id);
|
this.get(this.dashboard.id);
|
||||||
this.selectedFolder = this.dashboard.meta.parentId;
|
this.selectedFolder = this.dashboard.meta.parentId;
|
||||||
|
this.folders = [{id: 0, title: 'Root', type: 'dash-folder'}];
|
||||||
}
|
}
|
||||||
|
|
||||||
get(dashboardId: number) {
|
get(dashboardId: number) {
|
||||||
@ -21,17 +22,26 @@ export class FolderPickerCtrl {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return this.backendSrv.search(params).then(result => {
|
return this.backendSrv.search(params).then(result => {
|
||||||
this.folders = result;
|
this.folders.push(...result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
folderChanged() {
|
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() {
|
export function folderPicker() {
|
||||||
return {
|
return {
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<folder-picker dashboard="dashboard"></folder-picker>
|
<folder-picker ng-hide="dashboardMeta.isFolder" dashboard="dashboard"></folder-picker>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
|
Loading…
Reference in New Issue
Block a user