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/>`) Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
5c6be48c0a
commit
33b0e10cc4
@ -79,7 +79,11 @@ exports[`disable kube object detail items when cluster is not relevant given ext
|
|||||||
<span
|
<span
|
||||||
class="value"
|
class="value"
|
||||||
>
|
>
|
||||||
some-namespace
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@ -695,7 +699,11 @@ exports[`disable kube object detail items when cluster is not relevant given ext
|
|||||||
<span
|
<span
|
||||||
class="value"
|
class="value"
|
||||||
>
|
>
|
||||||
some-namespace
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -1306,7 +1314,11 @@ exports[`disable kube object detail items when cluster is not relevant given not
|
|||||||
<span
|
<span
|
||||||
class="value"
|
class="value"
|
||||||
>
|
>
|
||||||
some-namespace
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@ -79,7 +79,11 @@ exports[`reactively hide kube object detail item renders 1`] = `
|
|||||||
<span
|
<span
|
||||||
class="value"
|
class="value"
|
||||||
>
|
>
|
||||||
some-namespace
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -690,7 +694,11 @@ exports[`reactively hide kube object detail item when the item is shown renders
|
|||||||
<span
|
<span
|
||||||
class="value"
|
class="value"
|
||||||
>
|
>
|
||||||
some-namespace
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -19,6 +19,8 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import getDetailsUrlInjectable from "../kube-detail-params/get-details-url.injectable";
|
import getDetailsUrlInjectable from "../kube-detail-params/get-details-url.injectable";
|
||||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
import loggerInjectable from "../../../common/logger.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 {
|
export interface KubeObjectMetaProps {
|
||||||
object: KubeObject;
|
object: KubeObject;
|
||||||
@ -28,20 +30,24 @@ export interface KubeObjectMetaProps {
|
|||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getDetailsUrl: GetDetailsUrl;
|
getDetailsUrl: GetDetailsUrl;
|
||||||
apiManager: ApiManager;
|
apiManager: ApiManager;
|
||||||
|
namespaceApi: NamespaceApi;
|
||||||
logger: Logger;
|
logger: Logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedKubeObjectMeta = observer(({
|
const NonInjectedKubeObjectMeta = observer((
|
||||||
apiManager,
|
{
|
||||||
getDetailsUrl,
|
apiManager,
|
||||||
object,
|
getDetailsUrl,
|
||||||
hideFields = [
|
object,
|
||||||
"uid",
|
hideFields = [
|
||||||
"resourceVersion",
|
"uid",
|
||||||
"selfLink",
|
"resourceVersion",
|
||||||
],
|
"selfLink",
|
||||||
logger,
|
],
|
||||||
}: Dependencies & KubeObjectMetaProps) => {
|
logger,
|
||||||
|
namespaceApi,
|
||||||
|
}
|
||||||
|
: Dependencies & KubeObjectMetaProps) => {
|
||||||
if (!object) {
|
if (!object) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -59,6 +65,10 @@ const NonInjectedKubeObjectMeta = observer(({
|
|||||||
getFinalizers, getId, getName, metadata: { creationTimestamp },
|
getFinalizers, getId, getName, metadata: { creationTimestamp },
|
||||||
} = object;
|
} = object;
|
||||||
const ownerRefs = object.getOwnerRefs();
|
const ownerRefs = object.getOwnerRefs();
|
||||||
|
const namespace = getNs();
|
||||||
|
const namespaceDetailsUrl = namespace ? getDetailsUrl(
|
||||||
|
namespaceApi.formatUrlForNotListing({ name: namespace }),
|
||||||
|
) : "";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -71,8 +81,8 @@ const NonInjectedKubeObjectMeta = observer(({
|
|||||||
{getName()}
|
{getName()}
|
||||||
<KubeObjectStatusIcon key="icon" object={object} />
|
<KubeObjectStatusIcon key="icon" object={object} />
|
||||||
</DrawerItem>
|
</DrawerItem>
|
||||||
<DrawerItem name="Namespace" hidden={isHidden("namespace") || !getNs()}>
|
<DrawerItem name="Namespace" hidden={isHidden("namespace") || !namespace}>
|
||||||
{getNs()}
|
<Link to={namespaceDetailsUrl}>{namespace}</Link>
|
||||||
</DrawerItem>
|
</DrawerItem>
|
||||||
<DrawerItem name="UID" hidden={isHidden("uid")}>
|
<DrawerItem name="UID" hidden={isHidden("uid")}>
|
||||||
{getId()}
|
{getId()}
|
||||||
@ -122,5 +132,6 @@ export const KubeObjectMeta = withInjectables<Dependencies, KubeObjectMetaProps>
|
|||||||
getDetailsUrl: di.inject(getDetailsUrlInjectable),
|
getDetailsUrl: di.inject(getDetailsUrlInjectable),
|
||||||
apiManager: di.inject(apiManagerInjectable),
|
apiManager: di.inject(apiManagerInjectable),
|
||||||
logger: di.inject(loggerInjectable),
|
logger: di.inject(loggerInjectable),
|
||||||
|
namespaceApi: di.inject(namespaceApiInjectable),
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user