mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
* support folderuid in FolderPicker * support folderuid in unified alerting * support folderuid when returning to view mode after editing a panel * support folderuid when preselecting the folderpicker in dashboard general settings * support folderuid when saving dashboard * support folderuid when pre-selecting folderpicker in dashboard form * support folderuid in routes when loading a dashboard * support folderuid when saving dashboard json * support folderuid when validating new dashboard name * support folderuid when moving dashboard to another folder * support folderuid on dashboard action buttons * support folderuid when creating a new dashboard on an empty folder * support folderuid when showing library panel modal * support folderuid when saving library panel * support folderuid when importing dashboard * fixed broken tests * use folderuid when importing dashboards * remove commented line * fix typo when comparing uid values
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { createErrorNotification, createSuccessNotification } from '../../core/copy/appNotification';
|
|
import { AppNotification } from '../../types';
|
|
import { PanelModel } from '../dashboard/state';
|
|
|
|
import { addLibraryPanel, updateLibraryPanel } from './state/api';
|
|
import { LibraryElementDTO } from './types';
|
|
|
|
export function createPanelLibraryErrorNotification(message: string): AppNotification {
|
|
return createErrorNotification(message);
|
|
}
|
|
|
|
export function createPanelLibrarySuccessNotification(message: string): AppNotification {
|
|
return createSuccessNotification(message);
|
|
}
|
|
|
|
export async function saveAndRefreshLibraryPanel(panel: PanelModel, folderUid: string): Promise<LibraryElementDTO> {
|
|
const panelSaveModel = toPanelSaveModel(panel);
|
|
const savedPanel = await saveOrUpdateLibraryPanel(panelSaveModel, folderUid);
|
|
updatePanelModelWithUpdate(panel, savedPanel);
|
|
return savedPanel;
|
|
}
|
|
|
|
function toPanelSaveModel(panel: PanelModel): any {
|
|
let panelSaveModel = panel.getSaveModel();
|
|
panelSaveModel = {
|
|
libraryPanel: {
|
|
name: panel.title,
|
|
uid: undefined,
|
|
},
|
|
...panelSaveModel,
|
|
};
|
|
|
|
return panelSaveModel;
|
|
}
|
|
|
|
function updatePanelModelWithUpdate(panel: PanelModel, updated: LibraryElementDTO): void {
|
|
panel.restoreModel({
|
|
...updated.model,
|
|
configRev: 0, // reset config rev, since changes have been saved
|
|
libraryPanel: updated,
|
|
title: panel.title,
|
|
});
|
|
panel.hasSavedPanelEditChange = true;
|
|
panel.refresh();
|
|
}
|
|
|
|
function saveOrUpdateLibraryPanel(panel: any, folderUid: string): Promise<LibraryElementDTO> {
|
|
if (!panel.libraryPanel) {
|
|
return Promise.reject();
|
|
}
|
|
|
|
if (panel.libraryPanel && panel.libraryPanel.uid === '') {
|
|
return addLibraryPanel(panel, folderUid!);
|
|
}
|
|
|
|
return updateLibraryPanel(panel);
|
|
}
|