mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
don't move top items to sub-items, limit only to an extension
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
140c6f7385
commit
e7cb7504ac
@ -58,8 +58,8 @@ export class ClusterPageMenuRegistry extends BaseRegistry<ClusterPageMenuRegistr
|
||||
return this.getItems().filter((item) => !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) {
|
||||
|
||||
@ -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: <Trans>Overview</Trans>,
|
||||
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 = () => <TabLayout tabs={tabRoutes} />
|
||||
return <Route key={"extension-tab-layout-route-" + index} component={pageComponent}/>
|
||||
} else {
|
||||
const tabRoutes = this.getTabLayoutRoutes(menu)
|
||||
if (tabRoutes.length > 0) {
|
||||
const pageComponent = () => <TabLayout tabs={tabRoutes} />
|
||||
return <Route key={"extension-tab-layout-route-" + index} component={pageComponent}/>
|
||||
} else {
|
||||
const page = clusterPageRegistry.getByPageMenuTarget(menu.target)
|
||||
if (page) {
|
||||
const pageComponent = () => <page.components.Page />
|
||||
return <Route key={"extension-tab-layout-route-" + index} path={page.routePath} exact={page.exact} component={pageComponent}/>
|
||||
}
|
||||
|
||||
@ -77,12 +77,15 @@ export class Sidebar extends React.Component<Props> {
|
||||
}
|
||||
|
||||
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<Props> {
|
||||
});
|
||||
}
|
||||
});
|
||||
if (routes.length > 0) {
|
||||
routes.unshift({
|
||||
routePath: page.routePath,
|
||||
url: getExtensionPageUrl({ extensionId: page.extensionId, pageId: page.id, params: menu.target.params }),
|
||||
title: <Trans>Overview</Trans>,
|
||||
component: page.components.Page,
|
||||
exact: page.exact
|
||||
});
|
||||
}
|
||||
return routes;
|
||||
}
|
||||
|
||||
@ -222,11 +216,17 @@ export class Sidebar extends React.Component<Props> {
|
||||
</SidebarNavItem>
|
||||
{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 (
|
||||
<SidebarNavItem
|
||||
key={pageUrl} url={pageUrl}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user