mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
[UX]: allow to navigate to namespace-details from other resource details view (#7203)
* UX: allow to navigate to namespace (if available) in every kube-resource details view (via: `<KubeObjectMeta/>`)
This commit is contained in:
parent
d8acff67d1
commit
df1b947870
1
package-lock.json
generated
1
package-lock.json
generated
@ -32653,6 +32653,7 @@
|
||||
}
|
||||
},
|
||||
"packages/infrastructure/typescript": {
|
||||
"name": "@k8slens/typescript",
|
||||
"version": "0.0.1",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
@ -78,8 +78,12 @@ exports[`disable kube object detail items when cluster is not relevant given ext
|
||||
</span>
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
<a
|
||||
href="/workloads?kube-details=%2Fapi%2Fv1%2Fnamespaces%2Fsome-namespace&kube-selected=%2Fapis%2Fsome-api-version%2Fnamespaces%2Fsome-namespace%2Fsome-kind%2Fsome-name"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
@ -694,8 +698,12 @@ exports[`disable kube object detail items when cluster is not relevant given ext
|
||||
</span>
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
<a
|
||||
href="/workloads?kube-details=%2Fapi%2Fv1%2Fnamespaces%2Fsome-namespace&kube-selected=%2Fapis%2Fsome-api-version%2Fnamespaces%2Fsome-namespace%2Fsome-kind%2Fsome-name"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
@ -1305,8 +1313,12 @@ exports[`disable kube object detail items when cluster is not relevant given not
|
||||
</span>
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
<a
|
||||
href="/workloads?kube-details=%2Fapi%2Fv1%2Fnamespaces%2Fsome-namespace&kube-selected=%2Fapis%2Fsome-api-version%2Fnamespaces%2Fsome-namespace%2Fsome-kind%2Fsome-name"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@ -78,8 +78,12 @@ exports[`reactively hide kube object detail item renders 1`] = `
|
||||
</span>
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
<a
|
||||
href="/workloads?kube-details=%2Fapi%2Fv1%2Fnamespaces%2Fsome-namespace&kube-selected=%2Fapis%2Fsome-api-version%2Fnamespaces%2Fsome-namespace%2Fsome-kind%2Fsome-name"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
@ -689,8 +693,12 @@ exports[`reactively hide kube object detail item when the item is shown renders
|
||||
</span>
|
||||
<span
|
||||
class="value"
|
||||
>
|
||||
<a
|
||||
href="/workloads?kube-details=%2Fapi%2Fv1%2Fnamespaces%2Fsome-namespace&kube-selected=%2Fapis%2Fsome-api-version%2Fnamespaces%2Fsome-namespace%2Fsome-kind%2Fsome-name"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
|
||||
@ -19,6 +19,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import getDetailsUrlInjectable from "../kube-detail-params/get-details-url.injectable";
|
||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||
import loggerInjectable from "../../../common/logger.injectable";
|
||||
import type { NamespaceApi } from "../../../common/k8s-api/endpoints";
|
||||
import namespaceApiInjectable from "../../../common/k8s-api/endpoints/namespace.api.injectable";
|
||||
|
||||
export interface KubeObjectMetaProps {
|
||||
object: KubeObject;
|
||||
@ -28,10 +30,12 @@ export interface KubeObjectMetaProps {
|
||||
interface Dependencies {
|
||||
getDetailsUrl: GetDetailsUrl;
|
||||
apiManager: ApiManager;
|
||||
namespaceApi: NamespaceApi;
|
||||
logger: Logger;
|
||||
}
|
||||
|
||||
const NonInjectedKubeObjectMeta = observer(({
|
||||
const NonInjectedKubeObjectMeta = observer((
|
||||
{
|
||||
apiManager,
|
||||
getDetailsUrl,
|
||||
object,
|
||||
@ -41,7 +45,9 @@ const NonInjectedKubeObjectMeta = observer(({
|
||||
"selfLink",
|
||||
],
|
||||
logger,
|
||||
}: Dependencies & KubeObjectMetaProps) => {
|
||||
namespaceApi,
|
||||
}
|
||||
: Dependencies & KubeObjectMetaProps) => {
|
||||
if (!object) {
|
||||
return null;
|
||||
}
|
||||
@ -59,6 +65,10 @@ const NonInjectedKubeObjectMeta = observer(({
|
||||
getFinalizers, getId, getName, metadata: { creationTimestamp },
|
||||
} = object;
|
||||
const ownerRefs = object.getOwnerRefs();
|
||||
const namespace = getNs();
|
||||
const namespaceDetailsUrl = namespace ? getDetailsUrl(
|
||||
namespaceApi.formatUrlForNotListing({ name: namespace }),
|
||||
) : "";
|
||||
|
||||
return (
|
||||
<>
|
||||
@ -71,8 +81,8 @@ const NonInjectedKubeObjectMeta = observer(({
|
||||
{getName()}
|
||||
<KubeObjectStatusIcon key="icon" object={object} />
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Namespace" hidden={isHidden("namespace") || !getNs()}>
|
||||
{getNs()}
|
||||
<DrawerItem name="Namespace" hidden={isHidden("namespace") || !namespace}>
|
||||
<Link to={namespaceDetailsUrl}>{namespace}</Link>
|
||||
</DrawerItem>
|
||||
<DrawerItem name="UID" hidden={isHidden("uid")}>
|
||||
{getId()}
|
||||
@ -122,5 +132,6 @@ export const KubeObjectMeta = withInjectables<Dependencies, KubeObjectMetaProps>
|
||||
getDetailsUrl: di.inject(getDetailsUrlInjectable),
|
||||
apiManager: di.inject(apiManagerInjectable),
|
||||
logger: di.inject(loggerInjectable),
|
||||
namespaceApi: di.inject(namespaceApiInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user