grafana/public/app/features/scenes/SceneListPage.tsx
Torkel Ödegaard 0c4aa6d0d8
DashboardScene: First step to loading the current dashboard model and rendering it as a scene (#57012)
* Initial dashboard loading start

* loading dashboard works and shows something

* loading dashboard works and shows something

* Minor tweaks

* Add starred dashboards to scene list page

* Use new SceneGridLayout

* Allow switching directly from dashboard to a scene

* Migrate basic dashboard rows to scene based dashboard

* Review nit

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-11-17 07:15:51 -08:00

53 lines
1.5 KiB
TypeScript

// Libraries
import React, { FC } from 'react';
import { useAsync } from 'react-use';
import { Stack } from '@grafana/experimental';
import { Card } from '@grafana/ui';
import { Page } from 'app/core/components/Page/Page';
// Types
import { getGrafanaSearcher } from '../search/service';
import { getScenes } from './scenes';
export interface Props {}
export const SceneListPage: FC<Props> = ({}) => {
const scenes = getScenes();
const results = useAsync(() => {
return getGrafanaSearcher().starred({ starred: true });
}, []);
return (
<Page navId="scenes" subTitle="Experimental new runtime and state model for dashboards">
<Page.Contents>
<Stack direction="column" gap={1}>
<h5>Test scenes</h5>
<Stack direction="column" gap={0}>
{scenes.map((scene) => (
<Card href={`/scenes/${scene.state.title}`} key={scene.state.title}>
<Card.Heading>{scene.state.title}</Card.Heading>
</Card>
))}
</Stack>
{results.value && (
<>
<h5>Starred dashboards</h5>
<Stack direction="column" gap={0}>
{results.value!.view.map((dash) => (
<Card href={`/scenes/dashboard/${dash.uid}`} key={dash.uid}>
<Card.Heading>{dash.name}</Card.Heading>
</Card>
))}
</Stack>
</>
)}
</Stack>
</Page.Contents>
</Page>
);
};
export default SceneListPage;