From ee9c40818803ee97322f676cdb7a9ead99d28ea8 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Thu, 1 Feb 2018 13:21:24 +0100 Subject: [PATCH] folders: changes needed due to merge --- .../ManageDashboards/FolderPermissions.tsx | 2 +- .../ManageDashboards/FolderSettings.jest.tsx | 4 ++-- .../ManageDashboards/FolderSettings.tsx | 6 ++++-- .../manage_dashboards/manage_dashboards.ts | 12 ++++++------ public/app/core/services/backend_srv.ts | 2 +- .../dashboard/partials/folder_dashboards.html | 2 +- public/app/stores/FolderStore/FolderStore.ts | 17 +++++++++-------- public/app/stores/NavStore/NavStore.jest.ts | 10 +++++----- public/app/stores/NavStore/NavStore.ts | 12 +++--------- public/test/mocks/common.ts | 1 + 10 files changed, 33 insertions(+), 35 deletions(-) diff --git a/public/app/containers/ManageDashboards/FolderPermissions.tsx b/public/app/containers/ManageDashboards/FolderPermissions.tsx index 3214382732a..e6e788b7585 100644 --- a/public/app/containers/ManageDashboards/FolderPermissions.tsx +++ b/public/app/containers/ManageDashboards/FolderPermissions.tsx @@ -16,7 +16,7 @@ export class FolderPermissions extends Component { loadStore() { const { nav, folder, view } = this.props; - return folder.load(view.routeParams.get('slug') as string).then(res => { + return folder.load(view.routeParams.get('uid') as string).then(res => { return nav.initFolderNav(toJS(folder.folder), 'manage-folder-permissions'); }); } diff --git a/public/app/containers/ManageDashboards/FolderSettings.jest.tsx b/public/app/containers/ManageDashboards/FolderSettings.jest.tsx index 3355b657f03..bf7b35ed05d 100644 --- a/public/app/containers/ManageDashboards/FolderSettings.jest.tsx +++ b/public/app/containers/ManageDashboards/FolderSettings.jest.tsx @@ -9,14 +9,14 @@ describe('FolderSettings', () => { let page; beforeAll(() => { - backendSrv.getDashboard.mockReturnValue( + backendSrv.getDashboardByUid.mockReturnValue( Promise.resolve({ dashboard: { id: 1, title: 'Folder Name', }, meta: { - slug: 'folder-name', + url: '/dashboards/f/uid/folder-name', canSave: true, }, }) diff --git a/public/app/containers/ManageDashboards/FolderSettings.tsx b/public/app/containers/ManageDashboards/FolderSettings.tsx index ef3377622df..a6349764a14 100644 --- a/public/app/containers/ManageDashboards/FolderSettings.tsx +++ b/public/app/containers/ManageDashboards/FolderSettings.tsx @@ -20,10 +20,12 @@ export class FolderSettings extends React.Component { loadStore() { const { nav, folder, view } = this.props; - return folder.load(view.routeParams.get('slug') as string).then(res => { + return folder.load(view.routeParams.get('uid') as string).then(res => { this.formSnapshot = getSnapshot(folder); this.dashboard = res.dashboard; + view.updatePathAndQuery(`${res.meta.url}/settings`, {}, {}); + return nav.initFolderNav(toJS(folder.folder), 'manage-folder-settings'); }); } @@ -51,7 +53,7 @@ export class FolderSettings extends React.Component { folder .saveFolder(this.dashboard, { overwrite: false }) .then(newUrl => { - view.updatePathAndQuery(newUrl, '', ''); + view.updatePathAndQuery(newUrl, {}, {}); appEvents.emit('dashboard-saved'); appEvents.emit('alert-success', ['Folder saved']); diff --git a/public/app/core/components/manage_dashboards/manage_dashboards.ts b/public/app/core/components/manage_dashboards/manage_dashboards.ts index 9eb14a69a6e..d0f905f5f16 100644 --- a/public/app/core/components/manage_dashboards/manage_dashboards.ts +++ b/public/app/core/components/manage_dashboards/manage_dashboards.ts @@ -34,7 +34,7 @@ export class ManageDashboardsCtrl { // used when managing dashboards for a specific folder folderId?: number; - folderSlug?: string; + folderUid?: string; // if user can add new folders and/or add new dashboards canSave: boolean; @@ -74,11 +74,11 @@ export class ManageDashboardsCtrl { return this.initDashboardList(result); }) .then(() => { - if (!this.folderSlug) { + if (!this.folderUid) { return; } - return this.backendSrv.getDashboard('db', this.folderSlug).then(dash => { + return this.backendSrv.getDashboardByUid(this.folderUid).then(dash => { this.canSave = dash.meta.canSave; }); }); @@ -179,8 +179,8 @@ export class ManageDashboardsCtrl { }); } - private deleteFoldersAndDashboards(slugs) { - this.backendSrv.deleteDashboards(slugs).then(result => { + private deleteFoldersAndDashboards(uids) { + this.backendSrv.deleteDashboards(uids).then(result => { const folders = _.filter(result, dash => dash.meta.isFolder); const folderCount = folders.length; const dashboards = _.filter(result, dash => !dash.meta.isFolder); @@ -334,7 +334,7 @@ export function manageDashboardsDirective() { controllerAs: 'ctrl', scope: { folderId: '=', - folderSlug: '=', + folderUid: '=', }, }; } diff --git a/public/app/core/services/backend_srv.ts b/public/app/core/services/backend_srv.ts index 6d44967ef39..0a8b305ea53 100644 --- a/public/app/core/services/backend_srv.ts +++ b/public/app/core/services/backend_srv.ts @@ -257,7 +257,7 @@ export class BackendSrv { }); } - updateDashboardFolder(dash, options) { + saveFolder(dash, options) { options = options || {}; return this.post('/api/dashboards/db/', { diff --git a/public/app/features/dashboard/partials/folder_dashboards.html b/public/app/features/dashboard/partials/folder_dashboards.html index a03c53233f5..1082bee402e 100644 --- a/public/app/features/dashboard/partials/folder_dashboards.html +++ b/public/app/features/dashboard/partials/folder_dashboards.html @@ -1,5 +1,5 @@
- +
diff --git a/public/app/stores/FolderStore/FolderStore.ts b/public/app/stores/FolderStore/FolderStore.ts index d0216e32ad7..6f14e7221f8 100644 --- a/public/app/stores/FolderStore/FolderStore.ts +++ b/public/app/stores/FolderStore/FolderStore.ts @@ -2,8 +2,8 @@ import { types, getEnv, flow } from 'mobx-state-tree'; export const Folder = types.model('Folder', { id: types.identifier(types.number), - slug: types.string, title: types.string, + url: types.string, canSave: types.boolean, hasChanged: types.boolean, }); @@ -13,13 +13,13 @@ export const FolderStore = types folder: types.maybe(Folder), }) .actions(self => ({ - load: flow(function* load(slug: string) { + load: flow(function* load(uid: string) { const backendSrv = getEnv(self).backendSrv; - const res = yield backendSrv.getDashboard('db', slug); + const res = yield backendSrv.getDashboardByUid(uid); self.folder = Folder.create({ id: res.dashboard.id, title: res.dashboard.title, - slug: res.meta.slug, + url: res.meta.url, canSave: res.meta.canSave, hasChanged: false, }); @@ -35,14 +35,15 @@ export const FolderStore = types const backendSrv = getEnv(self).backendSrv; dashboard.title = self.folder.title.trim(); - const res = yield backendSrv.saveDashboard(dashboard, options); - self.folder.slug = res.slug; - return `dashboards/folder/${self.folder.id}/${res.slug}/settings`; + const res = yield backendSrv.saveFolder(dashboard, options); + self.folder.url = res.url; + + return `${self.folder.url}/settings`; }), deleteFolder: flow(function* deleteFolder() { const backendSrv = getEnv(self).backendSrv; - return backendSrv.deleteDashboard(self.folder.slug); + return backendSrv.deleteDashboard(self.folder.url); }), })); diff --git a/public/app/stores/NavStore/NavStore.jest.ts b/public/app/stores/NavStore/NavStore.jest.ts index b1ad820910d..43d4496c858 100644 --- a/public/app/stores/NavStore/NavStore.jest.ts +++ b/public/app/stores/NavStore/NavStore.jest.ts @@ -3,12 +3,12 @@ import { NavStore } from './NavStore'; describe('NavStore', () => { const folderId = 1; const folderTitle = 'Folder Name'; - const folderSlug = 'folder-name'; + const folderUrl = '/dashboards/f/uid/folder-name'; const canAdmin = true; const folder = { id: folderId, - slug: folderSlug, + url: folderUrl, title: folderTitle, canAdmin: canAdmin, }; @@ -33,9 +33,9 @@ describe('NavStore', () => { it('Should set correct urls for each tab', () => { expect(store.main.children.length).toBe(3); - expect(store.main.children[0].url).toBe(`dashboards/folder/${folderId}/${folderSlug}`); - expect(store.main.children[1].url).toBe(`dashboards/folder/${folderId}/${folderSlug}/permissions`); - expect(store.main.children[2].url).toBe(`dashboards/folder/${folderId}/${folderSlug}/settings`); + expect(store.main.children[0].url).toBe(folderUrl); + expect(store.main.children[1].url).toBe(`${folderUrl}/permissions`); + expect(store.main.children[2].url).toBe(`${folderUrl}/settings`); }); it('Should set active tab', () => { diff --git a/public/app/stores/NavStore/NavStore.ts b/public/app/stores/NavStore/NavStore.ts index d04c5bf0259..86348c00487 100644 --- a/public/app/stores/NavStore/NavStore.ts +++ b/public/app/stores/NavStore/NavStore.ts @@ -41,8 +41,6 @@ export const NavStore = types }, initFolderNav(folder: any, activeChildId: string) { - const folderUrl = createFolderUrl(folder.id, folder.slug); - let main = { icon: 'fa fa-folder-open', id: 'manage-folder', @@ -56,21 +54,21 @@ export const NavStore = types icon: 'fa fa-fw fa-th-large', id: 'manage-folder-dashboards', text: 'Dashboards', - url: folderUrl, + url: folder.url, }, { active: activeChildId === 'manage-folder-permissions', icon: 'fa fa-fw fa-lock', id: 'manage-folder-permissions', text: 'Permissions', - url: folderUrl + '/permissions', + url: `${folder.url}/permissions`, }, { active: activeChildId === 'manage-folder-settings', icon: 'fa fa-fw fa-cog', id: 'manage-folder-settings', text: 'Settings', - url: folderUrl + '/settings', + url: `${folder.url}/settings`, }, ], }; @@ -118,7 +116,3 @@ export const NavStore = types self.main = NavItem.create(main); }, })); - -function createFolderUrl(folderId: number, slug: string) { - return `dashboards/folder/${folderId}/${slug}`; -} diff --git a/public/test/mocks/common.ts b/public/test/mocks/common.ts index da63381ddf4..3f80227435d 100644 --- a/public/test/mocks/common.ts +++ b/public/test/mocks/common.ts @@ -1,6 +1,7 @@ export const backendSrv = { get: jest.fn(), getDashboard: jest.fn(), + getDashboardByUid: jest.fn(), post: jest.fn(), };