diff --git a/src/extensions/registries/page-menu-registry.ts b/src/extensions/registries/page-menu-registry.ts index 3644263319..146d657d86 100644 --- a/src/extensions/registries/page-menu-registry.ts +++ b/src/extensions/registries/page-menu-registry.ts @@ -58,8 +58,8 @@ export class ClusterPageMenuRegistry extends BaseRegistry !item.parentId) } - getSubItems(parentId: string) { - return this.getItems().filter((item) => item.parentId === parentId) + getSubItems(parent: ClusterPageMenuRegistration) { + return this.getItems().filter((item) => item.parentId === parent.id) } getByPage(page: RegisteredPage) { diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index 8477aa972d..e4b2355166 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -40,7 +40,7 @@ import { appEventBus } from "../../common/event-bus" import { requestMain } from "../../common/ipc"; import whatInput from 'what-input'; import { clusterSetFrameIdHandler } from "../../common/cluster-ipc"; -import { clusterPageMenuRegistry } from "../../extensions/registries"; +import { ClusterPageMenuRegistration, clusterPageMenuRegistry } from "../../extensions/registries"; import { TabLayoutRoute, TabLayout } from "./layout/tab-layout"; import { Trans } from "@lingui/macro"; @@ -75,13 +75,12 @@ export class App extends React.Component { return workloadsURL(); } - getTabLayoutRoutes(page: RegisteredPage) { - const menuItem = clusterPageMenuRegistry.getByPage(page); + getTabLayoutRoutes(menuItem: ClusterPageMenuRegistration) { const routes: TabLayoutRoute[] = []; if (!menuItem.id) { return routes; } - clusterPageMenuRegistry.getSubItems(menuItem.id).forEach((item) => { + clusterPageMenuRegistry.getSubItems(menuItem).forEach((item) => { const page = clusterPageRegistry.getByPageMenuTarget(item.target); if (page) { routes.push({ @@ -93,27 +92,18 @@ export class App extends React.Component { }); } }); - if (routes.length > 0) { - routes.unshift({ - routePath: page.routePath, - url: getExtensionPageUrl({ extensionId: page.extensionId, pageId: page.id, params: menuItem.target.params }), - title: Overview, - component: page.components.Page, - exact: page.exact - }) - } return routes; } renderExtensionTabLayoutRoutes() { return clusterPageMenuRegistry.getRootItems().map((menu, index) => { - const page = clusterPageRegistry.getByPageMenuTarget(menu.target) - if (page) { - const tabRoutes = this.getTabLayoutRoutes(page) - if (tabRoutes.length > 0) { - const pageComponent = () => - return - } else { + const tabRoutes = this.getTabLayoutRoutes(menu) + if (tabRoutes.length > 0) { + const pageComponent = () => + return + } else { + const page = clusterPageRegistry.getByPageMenuTarget(menu.target) + if (page) { const pageComponent = () => return } diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx index dc2ab39f1b..3d35dba759 100644 --- a/src/renderer/components/layout/sidebar.tsx +++ b/src/renderer/components/layout/sidebar.tsx @@ -77,12 +77,15 @@ export class Sidebar extends React.Component { } getTabLayoutRoutes(menu: ClusterPageMenuRegistration, page: RegisteredPage): TabLayoutRoute[] { + console.log("Menu", menu) if (!menu.id) { return []; } const routes: TabLayoutRoute[] = []; - clusterPageMenuRegistry.getSubItems(menu.id).forEach((subItem) => { + + clusterPageMenuRegistry.getSubItems(menu).forEach((subItem) => { const subPage = clusterPageRegistry.getByPageMenuTarget(subItem.target); + console.log(subItem, subPage) if (subPage) { routes.push({ routePath: subPage.id, @@ -93,15 +96,6 @@ export class Sidebar extends React.Component { }); } }); - if (routes.length > 0) { - routes.unshift({ - routePath: page.routePath, - url: getExtensionPageUrl({ extensionId: page.extensionId, pageId: page.id, params: menu.target.params }), - title: Overview, - component: page.components.Page, - exact: page.exact - }); - } return routes; } @@ -222,11 +216,17 @@ export class Sidebar extends React.Component { {clusterPageMenuRegistry.getRootItems().map((menuItem) => { const registeredPage = clusterPageRegistry.getByPageMenuTarget(menuItem.target); - if (!registeredPage) return; - const { extensionId, id: pageId } = registeredPage; - const pageUrl = getExtensionPageUrl({ extensionId, pageId, params: menuItem.target.params }); - const isActive = pageUrl === navigation.location.pathname; + let pageUrl: string + let isActive = false + if (registeredPage) { + const { extensionId, id: pageId } = registeredPage; + pageUrl = getExtensionPageUrl({ extensionId, pageId, params: menuItem.target.params }); + isActive = pageUrl === navigation.location.pathname; + } const tabRoutes = this.getTabLayoutRoutes(menuItem, registeredPage) + if (!registeredPage && tabRoutes.length == 0) { + return + } return (