mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { VizPanel } from '@grafana/scenes';
|
|
import { createAndCopyShareDashboardLink } from 'app/core/utils/shortLinks';
|
|
import { getTrackingSource } from 'app/features/dashboard/components/ShareModal/utils';
|
|
|
|
import store from '../../../../core/store';
|
|
import { DashboardScene } from '../../scene/DashboardScene';
|
|
import { DashboardInteractions } from '../../utils/interactions';
|
|
|
|
export type ShareLinkConfiguration = {
|
|
useAbsoluteTimeRange: boolean;
|
|
useShortUrl: boolean;
|
|
theme: string;
|
|
};
|
|
|
|
const DEFAULT_SHARE_LINK_CONFIGURATION: ShareLinkConfiguration = {
|
|
useAbsoluteTimeRange: true,
|
|
useShortUrl: true,
|
|
theme: 'current',
|
|
};
|
|
|
|
export const buildShareUrl = async (dashboard: DashboardScene, panel?: VizPanel) => {
|
|
const { useAbsoluteTimeRange, useShortUrl, theme } = getShareLinkConfiguration();
|
|
DashboardInteractions.shareLinkCopied({
|
|
currentTimeRange: useAbsoluteTimeRange,
|
|
theme,
|
|
shortenURL: useShortUrl,
|
|
shareResource: getTrackingSource(panel?.getRef()),
|
|
});
|
|
return await createAndCopyShareDashboardLink(dashboard, {
|
|
useAbsoluteTimeRange,
|
|
theme,
|
|
useShortUrl,
|
|
});
|
|
};
|
|
|
|
const SHARE_LINK_CONFIGURATION = 'grafana.dashboard.link.shareConfiguration';
|
|
// Function that returns share link configuration from local storage
|
|
export function getShareLinkConfiguration(): ShareLinkConfiguration {
|
|
if (store.exists(SHARE_LINK_CONFIGURATION)) {
|
|
return store.getObject(SHARE_LINK_CONFIGURATION) || DEFAULT_SHARE_LINK_CONFIGURATION;
|
|
}
|
|
|
|
return DEFAULT_SHARE_LINK_CONFIGURATION;
|
|
}
|
|
|
|
export function updateShareLinkConfiguration(config: ShareLinkConfiguration) {
|
|
store.setObject(SHARE_LINK_CONFIGURATION, config);
|
|
}
|