Files
grafana/public/app/features/dashboard-scene/sharing/public-dashboards/SharePublicDashboardTab.tsx
T
Dominik Prokop 58a0ff7459 DashboardScene: Share library panel (#78421)
* DashboardScene: Share library panel

* Add menu item to create library panel

* Test update
2023-11-23 03:30:25 -08:00

45 lines
1.7 KiB
TypeScript

import React from 'react';
import { SceneComponentProps, SceneObjectBase, SceneObjectRef } from '@grafana/scenes';
import { t } from 'app/core/internationalization';
import { useGetPublicDashboardQuery } from 'app/features/dashboard/api/publicDashboardApi';
import { Loader } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboard';
import { publicDashboardPersisted } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils';
import { DashboardScene } from '../../scene/DashboardScene';
import { SceneShareTabState } from '../types';
import { ConfigPublicDashboard } from './ConfigPublicDashboard';
import { CreatePublicDashboard } from './CreatePublicDashboard';
export interface SharePublicDashboardTabState extends SceneShareTabState {
dashboardRef: SceneObjectRef<DashboardScene>;
}
export class SharePublicDashboardTab extends SceneObjectBase<SharePublicDashboardTabState> {
public tabId = 'Public dashboard';
static Component = SharePublicDashboardTabRenderer;
public getTabLabel() {
return t('share-modal.tab-title.public-dashboard', 'Public Dashboard');
}
}
function SharePublicDashboardTabRenderer({ model }: SceneComponentProps<SharePublicDashboardTab>) {
const { data: publicDashboard, isLoading: isGetLoading } = useGetPublicDashboardQuery(
model.state.dashboardRef.resolve().state.uid!
);
return (
<>
{isGetLoading ? (
<Loader />
) : !publicDashboardPersisted(publicDashboard) ? (
<CreatePublicDashboard model={model} />
) : (
<ConfigPublicDashboard model={model} publicDashboard={publicDashboard} isGetLoading={isGetLoading} />
)}
</>
);
}