Skip to content

Commit

Permalink
feat: Turn page titles into dropdown for better navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
tiithansen committed Nov 20, 2024
1 parent 8feea2b commit bdbf159
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/components/TitleNavigation/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Dropdown, Icon, Menu } from "@grafana/ui"
import React from "react"

const menu = (
<Menu>
<Menu.Item
label="Clusters"
url="/a/k8s-app/clusters"
description="View cluster details"
/>
<Menu.Item
label="Workloads"
url="/a/k8s-app/workloads"
description="Explore workloads in your cluster"
/>
<Menu.Item
label="Network"
url="/a/k8s-app/network"
description="Explore network details"
/>
</Menu>
)

export function TitleNavigation(title: string) {
return (
<Dropdown overlay={menu} placement="left-start">
<a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
<h1>{title}<Icon style={{marginLeft: '8px'}} name="angle-down"></Icon></h1>
</a>
</Dropdown>
)
}
2 changes: 2 additions & 0 deletions src/pages/Clusters/Clusters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ import { usePluginJsonData } from 'utils/utils.plugin';
import { NodePage } from './pages/Node/Node';
import { createTopLevelVariables } from 'common/variableHelpers';
import { JsonData } from 'components/AppConfig';
import { TitleNavigation } from 'components/TitleNavigation';

function getScene(props: JsonData) {
return new SceneApp({
pages: [
new SceneAppPage({
title: 'Clusters',
renderTitle: TitleNavigation,
url: prefixRoute(`${ROUTES.Clusters}`),
$timeRange: new SceneTimeRange({
from: 'now-1h',
Expand Down
2 changes: 2 additions & 0 deletions src/pages/Network/Network.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { getIngressesScene } from './tabs/Ingresses/Ingresses';
import { getServicesScene } from './tabs/Services/Services';
import { IngressPage } from './pages/ingresses';
import { JsonData } from 'components/AppConfig';
import { TitleNavigation } from 'components/TitleNavigation';

function getScene(props: JsonData) {

Expand All @@ -25,6 +26,7 @@ function getScene(props: JsonData) {
pages: [
new SceneAppPage({
title: 'Network',
renderTitle: TitleNavigation,
url: prefixRoute(`${ROUTES.Network}`),
$timeRange: timeRange,
controls: [
Expand Down
2 changes: 2 additions & 0 deletions src/pages/Workloads/Workloads.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { DaemonSetPage } from './pages/DaemonSetPage';
import { CronJobPage } from './pages/CronJobPage';
import { JobPage } from './pages/JobPage';
import { JsonData } from 'components/AppConfig';
import { TitleNavigation } from 'components/TitleNavigation';

function getScene(props: JsonData) {

Expand All @@ -35,6 +36,7 @@ function getScene(props: JsonData) {
pages: [
new SceneAppPage({
title: 'Workloads',
renderTitle: TitleNavigation,
url: prefixRoute(`${ROUTES.Workloads}`),
$timeRange: timeRange,
controls: [
Expand Down

0 comments on commit bdbf159

Please sign in to comment.