mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Better visibility of updating global namespace from resource listing views (#6962)
* - <NamespaceSelectBadge/> new component refactored out from multiple resource views with excessive dependencies (e.g updating global namespace filter) - better UX to and visibility for user on click action (sometimes namespace-filter might not be visible in app/UI) - updated some snapshots with `jest --updateSnapshot src` (somehow affected `helm-charts/releases/*`)
This commit is contained in:
parent
5fc8ec610d
commit
5b3f11f80a
@ -1375,11 +1375,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -2172,11 +2178,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -2985,11 +2997,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -3834,11 +3852,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -4823,11 +4847,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -5814,11 +5844,17 @@ exports[`New Upgrade Helm Chart Dock Tab given a namespace is selected when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
my-second-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
my-second-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
|
||||
@ -2242,11 +2242,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -2328,11 +2334,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -3206,11 +3218,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -3292,11 +3310,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -4231,11 +4255,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -4317,11 +4347,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -5256,11 +5292,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -5342,11 +5384,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -6526,11 +6574,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -6612,11 +6666,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -7796,11 +7856,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -7882,11 +7948,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -11242,11 +11314,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -11328,11 +11406,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -12512,11 +12596,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -12598,11 +12688,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -13537,11 +13633,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -13623,11 +13725,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -14565,11 +14673,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -14651,11 +14765,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -15529,11 +15649,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -15615,11 +15741,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -16554,11 +16686,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
@ -16640,11 +16778,17 @@ exports[`showing details for helm release given application is started when navi
|
||||
<div
|
||||
class="TableCell namespace"
|
||||
>
|
||||
<a
|
||||
class="filterNamespace"
|
||||
<div
|
||||
class="badge NamespaceSelectBadge flat clickable"
|
||||
>
|
||||
some-other-namespace
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
Set global namespace filter to:
|
||||
<b>
|
||||
some-other-namespace
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="TableCell chart"
|
||||
|
||||
@ -21,8 +21,6 @@
|
||||
flex: .5;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,9 +16,7 @@ import { KubeObjectAge } from "../kube-object/age";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import leaseStoreInjectable from "./store.injectable";
|
||||
import type { LeaseStore } from "./store";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -32,7 +30,6 @@ export interface LeaseProps extends KubeObjectDetailsProps<Lease> {
|
||||
|
||||
interface Dependencies {
|
||||
leaseStore: LeaseStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -67,13 +64,10 @@ class NonInjectedLease extends React.Component<LeaseProps & Dependencies> {
|
||||
renderTableContents={lease => [
|
||||
lease.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={lease} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(lease.getNs()))}
|
||||
>
|
||||
{lease.getNs()}
|
||||
</a>,
|
||||
namespace={lease.getNs()}
|
||||
/>,
|
||||
lease.getHolderIdentity(),
|
||||
<KubeObjectAge key="age" object={lease} />,
|
||||
]}
|
||||
@ -87,6 +81,5 @@ export const Leases = withInjectables<Dependencies, LeaseProps>(NonInjectedLease
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
leaseStore: di.inject(leaseStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -21,8 +21,6 @@
|
||||
flex: .5;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,12 +11,10 @@ import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { ConfigMapStore } from "./store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import configMapStoreInjectable from "./store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -27,7 +25,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
configMapStore: ConfigMapStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -61,13 +58,10 @@ class NonInjectedConfigMaps extends React.Component<Dependencies> {
|
||||
renderTableContents={configMap => [
|
||||
configMap.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={configMap} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(configMap.getNs()))}
|
||||
>
|
||||
{configMap.getNs()}
|
||||
</a>,
|
||||
namespace={configMap.getNs()}
|
||||
/>,
|
||||
configMap.getKeys().join(", "),
|
||||
<KubeObjectAge key="age" object={configMap} />,
|
||||
]}
|
||||
@ -81,6 +75,5 @@ export const ConfigMaps = withInjectables<Dependencies>(NonInjectedConfigMaps, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
configMapStore: di.inject(configMapStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -21,8 +21,6 @@
|
||||
flex: .5;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,12 +13,10 @@ import type { KubeObjectDetailsProps } from "../kube-object-details";
|
||||
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import type { PodDisruptionBudgetStore } from "./store";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import podDisruptionBudgetStoreInjectable from "./store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -34,7 +32,6 @@ export interface PodDisruptionBudgetsProps extends KubeObjectDetailsProps<PodDis
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
filterByNamespace: FilterByNamespace;
|
||||
podDisruptionBudgetStore: PodDisruptionBudgetStore;
|
||||
}
|
||||
|
||||
@ -74,13 +71,10 @@ class NonInjectedPodDisruptionBudgets extends React.Component<PodDisruptionBudge
|
||||
renderTableContents={pdb => [
|
||||
pdb.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={pdb} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(pdb.getNs()))}
|
||||
>
|
||||
{pdb.getNs()}
|
||||
</a>,
|
||||
namespace={pdb.getNs()}
|
||||
/>,
|
||||
pdb.getMinAvailable(),
|
||||
pdb.getMaxUnavailable(),
|
||||
pdb.getCurrentHealthy(),
|
||||
@ -96,7 +90,6 @@ class NonInjectedPodDisruptionBudgets extends React.Component<PodDisruptionBudge
|
||||
export const PodDisruptionBudgets = withInjectables<Dependencies, PodDisruptionBudgetsProps>(NonInjectedPodDisruptionBudgets, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
podDisruptionBudgetStore: di.inject(podDisruptionBudgetStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -9,8 +9,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,13 +12,11 @@ import { AddQuotaDialog } from "./add-dialog/view";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { ResourceQuotaStore } from "./store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import resourceQuotaStoreInjectable from "./store.injectable";
|
||||
import openAddQuotaDialogInjectable from "./add-dialog/open.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -28,7 +26,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
resourceQuotaStore: ResourceQuotaStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
openAddQuotaDialog: () => void;
|
||||
}
|
||||
|
||||
@ -61,13 +58,10 @@ class NonInjectedResourceQuotas extends React.Component<Dependencies> {
|
||||
renderTableContents={resourceQuota => [
|
||||
resourceQuota.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={resourceQuota}/>,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(resourceQuota.getNs()))}
|
||||
>
|
||||
{resourceQuota.getNs()}
|
||||
</a>,
|
||||
namespace={resourceQuota.getNs()}
|
||||
/>,
|
||||
<KubeObjectAge key="age" object={resourceQuota} />,
|
||||
]}
|
||||
addRemoveButtons={{
|
||||
@ -84,7 +78,6 @@ class NonInjectedResourceQuotas extends React.Component<Dependencies> {
|
||||
export const ResourceQuotas = withInjectables<Dependencies>(NonInjectedResourceQuotas, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
resourceQuotaStore: di.inject(resourceQuotaStoreInjectable),
|
||||
openAddQuotaDialog: di.inject(openAddQuotaDialogInjectable),
|
||||
}),
|
||||
|
||||
@ -17,8 +17,6 @@
|
||||
@include table-cell-labels-offsets;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,13 +13,11 @@ import { Badge } from "../badge";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import type { SecretStore } from "./store";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import secretStoreInjectable from "./store.injectable";
|
||||
import openAddSecretDialogInjectable from "./add-dialog/open.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -31,7 +29,6 @@ enum columnId {
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
filterByNamespace: FilterByNamespace;
|
||||
secretStore: SecretStore;
|
||||
openAddSecretDialog: () => void;
|
||||
}
|
||||
@ -71,13 +68,10 @@ class NonInjectedSecrets extends React.Component<Dependencies> {
|
||||
renderTableContents={secret => [
|
||||
secret.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={secret} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(secret.getNs()))}
|
||||
>
|
||||
{secret.getNs()}
|
||||
</a>,
|
||||
namespace={secret.getNs()}
|
||||
/>,
|
||||
secret.getLabels().map(label => (
|
||||
<Badge
|
||||
scrollable
|
||||
@ -104,7 +98,6 @@ class NonInjectedSecrets extends React.Component<Dependencies> {
|
||||
export const Secrets = withInjectables<Dependencies>(NonInjectedSecrets, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
secretStore: di.inject(secretStoreInjectable),
|
||||
openAddSecretDialog: di.inject(openAddSecretDialogInjectable),
|
||||
}),
|
||||
|
||||
@ -21,8 +21,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,9 +23,7 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import helmReleasesRouteParametersInjectable from "./helm-releases-route-parameters.injectable";
|
||||
import type { NavigateToHelmReleases } from "../../../common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable";
|
||||
import navigateToHelmReleasesInjectable from "../../../common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -43,19 +41,9 @@ interface Dependencies {
|
||||
releasesArePending: IComputedValue<boolean>;
|
||||
namespace: IComputedValue<string>;
|
||||
navigateToHelmReleases: NavigateToHelmReleases;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
class NonInjectedHelmReleases extends Component<Dependencies> {
|
||||
// TODO: This side-effect in mount must go.
|
||||
componentDidMount() {
|
||||
const namespace = this.props.namespace.get();
|
||||
|
||||
if (namespace) {
|
||||
this.props.filterByNamespace(namespace);
|
||||
}
|
||||
}
|
||||
|
||||
onDetails = (item: HelmRelease) => {
|
||||
this.showDetails(item);
|
||||
};
|
||||
@ -188,13 +176,10 @@ class NonInjectedHelmReleases extends Component<Dependencies> {
|
||||
]}
|
||||
renderTableContents={release => [
|
||||
release.getName(),
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(release.getNs()))}
|
||||
>
|
||||
{release.getNs()}
|
||||
</a>,
|
||||
namespace={release.getNs()}
|
||||
/>,
|
||||
release.getChart(),
|
||||
release.getRevision(),
|
||||
release.getVersion(),
|
||||
@ -226,7 +211,6 @@ export const HelmReleases = withInjectables<Dependencies>(NonInjectedHelmRelease
|
||||
releases: di.inject(removableReleasesInjectable),
|
||||
releasesArePending: di.inject(releasesInjectable).pending,
|
||||
navigateToHelmReleases: di.inject(navigateToHelmReleasesInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
...di.inject(helmReleasesRouteParametersInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
.NamespaceSelectBadge {
|
||||
@include pseudo-link;
|
||||
border-bottom: unset;
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import styles from "./namespace-select-badge.module.scss";
|
||||
import React from "react";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import type { BadgeProps } from "../badge";
|
||||
import { Badge } from "../badge";
|
||||
import type {
|
||||
FilterByNamespace,
|
||||
} from "./namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable
|
||||
from "./namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { prevDefault, cssNames } from "../../utils";
|
||||
|
||||
export interface NamespaceSelectBadgeProps extends BadgeProps {
|
||||
namespace: string;
|
||||
}
|
||||
|
||||
export interface Dependencies {
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
export function NamespaceSelectBadgeNonInjected(
|
||||
{
|
||||
namespace,
|
||||
label,
|
||||
filterByNamespace,
|
||||
...props
|
||||
}: NamespaceSelectBadgeProps & Dependencies) {
|
||||
return (
|
||||
<Badge
|
||||
flat={true}
|
||||
expandable={false}
|
||||
{...props}
|
||||
label={namespace ?? label}
|
||||
tooltip={(
|
||||
<>
|
||||
Set global namespace filter to:
|
||||
<b>{namespace}</b>
|
||||
</>
|
||||
)}
|
||||
className={cssNames(styles.NamespaceSelectBadge, props.className)}
|
||||
onClick={prevDefault(() => filterByNamespace(namespace))}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export const NamespaceSelectBadge = withInjectables<Dependencies, NamespaceSelectBadgeProps>(NamespaceSelectBadgeNonInjected, {
|
||||
getProps(di, props) {
|
||||
return {
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
};
|
||||
},
|
||||
});
|
||||
@ -13,8 +13,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,12 +11,10 @@ import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { EndpointsStore } from "./store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import endpointsStoreInjectable from "./store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -27,7 +25,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
endpointsStore: EndpointsStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -59,13 +56,10 @@ class NonInjectedEndpoints extends React.Component<Dependencies> {
|
||||
renderTableContents={endpoint => [
|
||||
endpoint.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={endpoint} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(endpoint.getNs()))}
|
||||
>
|
||||
{endpoint.getNs()}
|
||||
</a>,
|
||||
namespace={endpoint.getNs()}
|
||||
/>,
|
||||
endpoint.toString(),
|
||||
<KubeObjectAge key="age" object={endpoint} />,
|
||||
]}
|
||||
@ -86,6 +80,5 @@ export const Endpoints = withInjectables<Dependencies>(NonInjectedEndpoints, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
endpointsStore: di.inject(endpointsStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -32,8 +32,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,12 +12,10 @@ import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { computeRouteDeclarations } from "../../../common/k8s-api/endpoints";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { IngressStore } from "./ingress-store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import ingressStoreInjectable from "./ingress-store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -29,13 +27,11 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
ingressStore: IngressStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const NonInjectedIngresses = observer((props: Dependencies) => {
|
||||
const {
|
||||
ingressStore,
|
||||
filterByNamespace,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
@ -66,13 +62,7 @@ const NonInjectedIngresses = observer((props: Dependencies) => {
|
||||
renderTableContents={ ingress => [
|
||||
ingress.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={ ingress } />,
|
||||
<a
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(ingress.getNs()))}
|
||||
>
|
||||
{ingress.getNs()}
|
||||
</a>,
|
||||
<NamespaceSelectBadge key="namespace" namespace={ingress.getNs()} />,
|
||||
ingress.getLoadBalancers().map(lb => <p key={ lb }>{ lb }</p>),
|
||||
computeRouteDeclarations(ingress).map(decl => (
|
||||
decl.displayAsLink
|
||||
@ -112,6 +102,5 @@ export const Ingresses = withInjectables<Dependencies>(NonInjectedIngresses, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
ingressStore: di.inject(ingressStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -9,8 +9,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,11 +12,9 @@ import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { NetworkPolicyStore } from "./store";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import networkPolicyStoreInjectable from "./store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -27,7 +25,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
networkPolicyStore: NetworkPolicyStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -59,13 +56,10 @@ class NonInjectedNetworkPolicies extends React.Component<Dependencies> {
|
||||
renderTableContents={networkPolicy => [
|
||||
networkPolicy.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={networkPolicy} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(networkPolicy.getNs()))}
|
||||
>
|
||||
{networkPolicy.getNs()}
|
||||
</a>,
|
||||
namespace={networkPolicy.getNs()}
|
||||
/>,
|
||||
networkPolicy.getTypes().join(", "),
|
||||
<KubeObjectAge key="age" object={networkPolicy} />,
|
||||
]}
|
||||
@ -78,7 +72,6 @@ class NonInjectedNetworkPolicies extends React.Component<Dependencies> {
|
||||
export const NetworkPolicies = withInjectables<Dependencies>(NonInjectedNetworkPolicies, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
networkPolicyStore: di.inject(networkPolicyStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -14,8 +14,6 @@
|
||||
flex: 0.6;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,9 +19,7 @@ import { computed, makeObservable } from "mobx";
|
||||
import portForwardsRouteParametersInjectable from "./port-forwards-route-parameters.injectable";
|
||||
import type { NavigateToPortForwards } from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
|
||||
import navigateToPortForwardsInjectable from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -37,7 +35,6 @@ interface Dependencies {
|
||||
portForwardStore: PortForwardStore;
|
||||
forwardport: IComputedValue<string>;
|
||||
navigateToPortForwards: NavigateToPortForwards;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -132,13 +129,10 @@ class NonInjectedPortForwards extends React.Component<Dependencies> {
|
||||
]}
|
||||
renderTableContents={item => [
|
||||
item.getName(),
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(item.getNs()))}
|
||||
>
|
||||
{item.getNs()}
|
||||
</a>,
|
||||
namespace={item.getNs()}
|
||||
/>,
|
||||
item.getKind(),
|
||||
item.getPort(),
|
||||
item.getForwardPort(),
|
||||
@ -173,7 +167,6 @@ export const PortForwards = withInjectables<Dependencies>(NonInjectedPortForward
|
||||
portForwardStore: di.inject(portForwardStoreInjectable),
|
||||
...di.inject(portForwardsRouteParametersInjectable),
|
||||
navigateToPortForwards: di.inject(navigateToPortForwardsInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
@ -26,8 +26,6 @@
|
||||
flex: 0.6;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,13 +12,11 @@ import { Badge } from "../badge";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { ServiceStore } from "./store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import type { Service } from "../../../common/k8s-api/endpoints";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import serviceStoreInjectable from "./store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -48,7 +46,6 @@ const formatExternalIps = (service: Service) => {
|
||||
|
||||
interface Dependencies {
|
||||
serviceStore: ServiceStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -92,13 +89,10 @@ class NonInjectedServices extends React.Component<Dependencies> {
|
||||
renderTableContents={service => [
|
||||
service.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={ service } />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={ prevDefault(() => this.props.filterByNamespace(service.getNs())) }
|
||||
>
|
||||
{ service.getNs() }
|
||||
</a>,
|
||||
namespace={service.getNs()}
|
||||
/>,
|
||||
service.getType(),
|
||||
service.getClusterIp(),
|
||||
service.getPorts().join(", "),
|
||||
@ -116,7 +110,6 @@ class NonInjectedServices extends React.Component<Dependencies> {
|
||||
export const Services = withInjectables<Dependencies>(NonInjectedServices, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
serviceStore: di.inject(serviceStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -39,8 +39,6 @@
|
||||
flex: 0.4;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,8 +13,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,17 +14,15 @@ import { KubeObjectAge } from "../../kube-object/age";
|
||||
import type { RoleStore } from "../+roles/store";
|
||||
import type { ServiceAccountStore } from "../+service-accounts/store";
|
||||
import type { RoleBindingStore } from "./store";
|
||||
import { prevDefault } from "../../../utils";
|
||||
import type { ClusterRoleStore } from "../+cluster-roles/store";
|
||||
import type { FilterByNamespace } from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import clusterRoleStoreInjectable from "../+cluster-roles/store.injectable";
|
||||
import filterByNamespaceInjectable from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import roleBindingStoreInjectable from "./store.injectable";
|
||||
import roleStoreInjectable from "../+roles/store.injectable";
|
||||
import serviceAccountStoreInjectable from "../+service-accounts/store.injectable";
|
||||
import type { OpenRoleBindingDialog } from "./dialog/open.injectable";
|
||||
import openRoleBindingDialogInjectable from "./dialog/open.injectable";
|
||||
import { NamespaceSelectBadge } from "../../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -38,7 +36,6 @@ interface Dependencies {
|
||||
roleStore: RoleStore;
|
||||
clusterRoleStore: ClusterRoleStore;
|
||||
serviceAccountStore: ServiceAccountStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
openRoleBindingDialog: OpenRoleBindingDialog;
|
||||
}
|
||||
|
||||
@ -50,7 +47,6 @@ class NonInjectedRoleBindings extends React.Component<Dependencies> {
|
||||
roleBindingStore,
|
||||
roleStore,
|
||||
serviceAccountStore,
|
||||
filterByNamespace,
|
||||
openRoleBindingDialog,
|
||||
} = this.props;
|
||||
|
||||
@ -83,13 +79,10 @@ class NonInjectedRoleBindings extends React.Component<Dependencies> {
|
||||
renderTableContents={binding => [
|
||||
binding.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={binding} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(binding.getNs()))}
|
||||
>
|
||||
{binding.getNs()}
|
||||
</a>,
|
||||
namespace={binding.getNs()}
|
||||
/>,
|
||||
binding.getSubjectNames(),
|
||||
<KubeObjectAge key="age" object={binding} />,
|
||||
]}
|
||||
@ -108,7 +101,6 @@ export const RoleBindings = withInjectables<Dependencies>(NonInjectedRoleBinding
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
clusterRoleStore: di.inject(clusterRoleStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
roleBindingStore: di.inject(roleBindingStoreInjectable),
|
||||
roleStore: di.inject(roleStoreInjectable),
|
||||
serviceAccountStore: di.inject(serviceAccountStoreInjectable),
|
||||
|
||||
@ -13,8 +13,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,12 +13,10 @@ import { AddRoleDialog } from "./add-dialog/view";
|
||||
import { SiblingsInTabLayout } from "../../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../../kube-object/age";
|
||||
import type { RoleStore } from "./store";
|
||||
import { prevDefault } from "../../../utils";
|
||||
import type { FilterByNamespace } from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import roleStoreInjectable from "./store.injectable";
|
||||
import openAddRoleDialogInjectable from "./add-dialog/open.injectable";
|
||||
import { NamespaceSelectBadge } from "../../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -28,7 +26,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
roleStore: RoleStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
openAddRoleDialog: () => void;
|
||||
}
|
||||
|
||||
@ -36,7 +33,6 @@ interface Dependencies {
|
||||
class NonInjectedRoles extends React.Component<Dependencies> {
|
||||
render() {
|
||||
const {
|
||||
filterByNamespace,
|
||||
roleStore,
|
||||
openAddRoleDialog,
|
||||
} = this.props;
|
||||
@ -66,13 +62,10 @@ class NonInjectedRoles extends React.Component<Dependencies> {
|
||||
renderTableContents={role => [
|
||||
role.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={role} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(role.getNs()))}
|
||||
>
|
||||
{role.getNs()}
|
||||
</a>,
|
||||
namespace={role.getNs()}
|
||||
/>,
|
||||
<KubeObjectAge key="age" object={role} />,
|
||||
]}
|
||||
addRemoveButtons={{
|
||||
@ -89,7 +82,6 @@ class NonInjectedRoles extends React.Component<Dependencies> {
|
||||
export const Roles = withInjectables<Dependencies>(NonInjectedRoles, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
roleStore: di.inject(roleStoreInjectable),
|
||||
openAddRoleDialog: di.inject(openAddRoleDialogInjectable),
|
||||
}),
|
||||
|
||||
@ -9,8 +9,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,14 +12,12 @@ import { KubeObjectStatusIcon } from "../../kube-object-status-icon";
|
||||
import { CreateServiceAccountDialog } from "./create-dialog/view";
|
||||
import { SiblingsInTabLayout } from "../../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../../kube-object/age";
|
||||
import { prevDefault } from "../../../utils";
|
||||
import type { ServiceAccountStore } from "./store";
|
||||
import type { FilterByNamespace } from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import filterByNamespaceInjectable from "../../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import serviceAccountStoreInjectable from "./store.injectable";
|
||||
import type { OpenCreateServiceAccountDialog } from "./create-dialog/open.injectable";
|
||||
import openCreateServiceAccountDialogInjectable from "./create-dialog/open.injectable";
|
||||
import { NamespaceSelectBadge } from "../../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -29,7 +27,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
serviceAccountStore: ServiceAccountStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
openCreateServiceAccountDialog: OpenCreateServiceAccountDialog;
|
||||
}
|
||||
|
||||
@ -37,7 +34,6 @@ interface Dependencies {
|
||||
class NonInjectedServiceAccounts extends React.Component<Dependencies> {
|
||||
render() {
|
||||
const {
|
||||
filterByNamespace,
|
||||
serviceAccountStore,
|
||||
openCreateServiceAccountDialog,
|
||||
} = this.props;
|
||||
@ -67,13 +63,10 @@ class NonInjectedServiceAccounts extends React.Component<Dependencies> {
|
||||
renderTableContents={account => [
|
||||
account.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={account} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(account.getNs()))}
|
||||
>
|
||||
{account.getNs()}
|
||||
</a>,
|
||||
namespace={account.getNs()}
|
||||
/>,
|
||||
<KubeObjectAge key="age" object={account} />,
|
||||
]}
|
||||
addRemoveButtons={{
|
||||
@ -90,7 +83,6 @@ class NonInjectedServiceAccounts extends React.Component<Dependencies> {
|
||||
export const ServiceAccounts = withInjectables<Dependencies>(NonInjectedServiceAccounts, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
serviceAccountStore: di.inject(serviceAccountStoreInjectable),
|
||||
openCreateServiceAccountDialog: di.inject(openCreateServiceAccountDialogInjectable),
|
||||
}),
|
||||
|
||||
@ -9,8 +9,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,9 +17,7 @@ import type { EventStore } from "../+events/store";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import cronJobStoreInjectable from "./store.injectable";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -34,14 +32,12 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
cronJobStore: CronJobStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const NonInjectedCronJobs = observer((props: Dependencies) => {
|
||||
const {
|
||||
cronJobStore,
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
@ -82,13 +78,10 @@ const NonInjectedCronJobs = observer((props: Dependencies) => {
|
||||
renderTableContents={cronJob => [
|
||||
cronJob.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={cronJob} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(cronJob.getNs()))}
|
||||
>
|
||||
{cronJob.getNs()}
|
||||
</a>,
|
||||
namespace={cronJob.getNs()}
|
||||
/>,
|
||||
cronJob.isNeverRun() ? "never" : cronJob.getSchedule(),
|
||||
cronJob.getSuspendFlag(),
|
||||
cronJobStore.getActiveJobsNum(cronJob),
|
||||
@ -105,6 +98,5 @@ export const CronJobs = withInjectables<Dependencies>(NonInjectedCronJobs, {
|
||||
...props,
|
||||
cronJobStore: di.inject(cronJobStoreInjectable),
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -22,8 +22,6 @@
|
||||
@include table-cell-labels-offsets;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,12 +15,10 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { DaemonSetStore } from "./store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import { prevDefault } from "../../utils";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import daemonSetStoreInjectable from "./store.injectable";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -33,14 +31,12 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
daemonSetStore: DaemonSetStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const NonInjectedDaemonSets = observer((props: Dependencies) => {
|
||||
const {
|
||||
daemonSetStore,
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
} = props;
|
||||
|
||||
const getPodsLength = (daemonSet: DaemonSet) => daemonSetStore.getChildPods(daemonSet).length;
|
||||
@ -66,7 +62,12 @@ const NonInjectedDaemonSets = observer((props: Dependencies) => {
|
||||
renderHeaderTitle="Daemon Sets"
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ title: "Namespace", className: "namespace", sortBy: columnId.namespace, id: columnId.namespace },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{ title: "Pods", className: "pods", sortBy: columnId.pods, id: columnId.pods },
|
||||
{ className: "warning", showWithColumn: columnId.pods },
|
||||
{ title: "Node Selector", className: "labels scrollable", id: columnId.labels },
|
||||
@ -74,13 +75,10 @@ const NonInjectedDaemonSets = observer((props: Dependencies) => {
|
||||
]}
|
||||
renderTableContents={daemonSet => [
|
||||
daemonSet.getName(),
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(daemonSet.getNs()))}
|
||||
>
|
||||
{daemonSet.getNs()}
|
||||
</a>,
|
||||
namespace={daemonSet.getNs()}
|
||||
/>,
|
||||
getPodsLength(daemonSet),
|
||||
<KubeObjectStatusIcon key="icon" object={daemonSet} />,
|
||||
daemonSet.getNodeSelectors().map(selector => (
|
||||
@ -102,6 +100,5 @@ export const DaemonSets = withInjectables<Dependencies>(NonInjectedDaemonSets, {
|
||||
...props,
|
||||
daemonSetStore: di.inject(daemonSetStoreInjectable),
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -43,8 +43,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { Deployment } from "../../../common/k8s-api/endpoints";
|
||||
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import { cssNames, prevDefault } from "../../utils";
|
||||
import { cssNames } from "../../utils";
|
||||
import kebabCase from "lodash/kebabCase";
|
||||
import orderBy from "lodash/orderBy";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
@ -17,11 +17,10 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { DeploymentStore } from "./store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import deploymentStoreInjectable from "./store.injectable";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -35,7 +34,6 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
deploymentStore: DeploymentStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
@observer
|
||||
@ -64,7 +62,6 @@ class NonInjectedDeployments extends React.Component<Dependencies> {
|
||||
const {
|
||||
deploymentStore,
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
@ -90,22 +87,34 @@ class NonInjectedDeployments extends React.Component<Dependencies> {
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ className: "warning", showWithColumn: columnId.name },
|
||||
{ title: "Namespace", className: "namespace", sortBy: columnId.namespace, id: columnId.namespace },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{ title: "Pods", className: "pods", id: columnId.pods },
|
||||
{ title: "Replicas", className: "replicas", sortBy: columnId.replicas, id: columnId.replicas },
|
||||
{
|
||||
title: "Replicas",
|
||||
className: "replicas",
|
||||
sortBy: columnId.replicas,
|
||||
id: columnId.replicas,
|
||||
},
|
||||
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
|
||||
{ title: "Conditions", className: "conditions", sortBy: columnId.condition, id: columnId.condition },
|
||||
{
|
||||
title: "Conditions",
|
||||
className: "conditions",
|
||||
sortBy: columnId.condition,
|
||||
id: columnId.condition,
|
||||
},
|
||||
]}
|
||||
renderTableContents={deployment => [
|
||||
deployment.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={deployment} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(deployment.getNs()))}
|
||||
>
|
||||
{deployment.getNs()}
|
||||
</a>,
|
||||
namespace={deployment.getNs()}
|
||||
/>,
|
||||
this.renderPods(deployment),
|
||||
deployment.getReplicas(),
|
||||
<KubeObjectAge key="age" object={deployment} />,
|
||||
@ -122,6 +131,5 @@ export const Deployments = withInjectables<Dependencies>(NonInjectedDeployments,
|
||||
...props,
|
||||
deploymentStore: di.inject(deploymentStoreInjectable),
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -19,8 +19,6 @@
|
||||
@include job-condition-colors;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,12 +14,10 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { JobStore } from "./store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import jobStoreInjectable from "./store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -32,13 +30,11 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
jobStore: JobStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const NonInjectedJobs = observer((props: Dependencies) => {
|
||||
const {
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
jobStore,
|
||||
} = props;
|
||||
|
||||
@ -73,13 +69,10 @@ const NonInjectedJobs = observer((props: Dependencies) => {
|
||||
|
||||
return [
|
||||
job.getName(),
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(job.getNs()))}
|
||||
>
|
||||
{job.getNs()}
|
||||
</a>,
|
||||
namespace={job.getNs()}
|
||||
/>,
|
||||
`${job.getCompletions()} / ${job.getDesiredCompletions()}`,
|
||||
<KubeObjectStatusIcon key="icon" object={job} />,
|
||||
<KubeObjectAge key="age" object={job} />,
|
||||
@ -98,7 +91,6 @@ export const Jobs = withInjectables<Dependencies>(NonInjectedJobs, {
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
jobStore: di.inject(jobStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -38,8 +38,6 @@
|
||||
flex-grow: 0.7;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ import { Link } from "react-router-dom";
|
||||
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||
import type { NodeApi, Pod } from "../../../common/k8s-api/endpoints";
|
||||
import { StatusBrick } from "../status-brick";
|
||||
import { cssNames, getConvertedParts, object, prevDefault, stopPropagation } from "../../utils";
|
||||
import { cssNames, getConvertedParts, object, stopPropagation } from "../../utils";
|
||||
import startCase from "lodash/startCase";
|
||||
import kebabCase from "lodash/kebabCase";
|
||||
import type { ApiManager } from "../../../common/k8s-api/api-manager";
|
||||
@ -28,8 +28,7 @@ import type { PodStore } from "./store";
|
||||
import nodeApiInjectable from "../../../common/k8s-api/endpoints/node.api.injectable";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import podStoreInjectable from "./store.injectable";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -45,7 +44,6 @@ enum columnId {
|
||||
|
||||
interface Dependencies {
|
||||
getDetailsUrl: GetDetailsUrl;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
apiManager: ApiManager;
|
||||
eventStore: EventStore;
|
||||
podStore: PodStore;
|
||||
@ -111,7 +109,7 @@ class NonInjectedPods extends React.Component<Dependencies> {
|
||||
className="Pods"
|
||||
store={podStore}
|
||||
dependentStores={[eventStore]} // status icon component uses event store
|
||||
tableId = "workloads_pods"
|
||||
tableId="workloads_pods"
|
||||
isConfigurable
|
||||
sortingCallbacks={{
|
||||
[columnId.name]: pod => getConvertedParts(pod.getName()),
|
||||
@ -134,10 +132,30 @@ class NonInjectedPods extends React.Component<Dependencies> {
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ className: "warning", showWithColumn: columnId.name },
|
||||
{ title: "Namespace", className: "namespace", sortBy: columnId.namespace, id: columnId.namespace },
|
||||
{ title: "Containers", className: "containers", sortBy: columnId.containers, id: columnId.containers },
|
||||
{ title: "Restarts", className: "restarts", sortBy: columnId.restarts, id: columnId.restarts },
|
||||
{ title: "Controlled By", className: "owners", sortBy: columnId.owners, id: columnId.owners },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{
|
||||
title: "Containers",
|
||||
className: "containers",
|
||||
sortBy: columnId.containers,
|
||||
id: columnId.containers,
|
||||
},
|
||||
{
|
||||
title: "Restarts",
|
||||
className: "restarts",
|
||||
sortBy: columnId.restarts,
|
||||
id: columnId.restarts,
|
||||
},
|
||||
{
|
||||
title: "Controlled By",
|
||||
className: "owners",
|
||||
sortBy: columnId.owners,
|
||||
id: columnId.owners,
|
||||
},
|
||||
{ title: "Node", className: "node", sortBy: columnId.node, id: columnId.node },
|
||||
{ title: "QoS", className: "qos", sortBy: columnId.qos, id: columnId.qos },
|
||||
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
|
||||
@ -152,13 +170,10 @@ class NonInjectedPods extends React.Component<Dependencies> {
|
||||
expandable={false}
|
||||
/>,
|
||||
<KubeObjectStatusIcon key="icon" object={pod} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => this.props.filterByNamespace(pod.getNs()))}
|
||||
>
|
||||
{pod.getNs()}
|
||||
</a>,
|
||||
namespace={pod.getNs()}
|
||||
/>,
|
||||
this.renderContainersStatus(pod),
|
||||
pod.getRestartsCount(),
|
||||
pod.getOwnerRefs().map(ref => {
|
||||
@ -186,7 +201,9 @@ class NonInjectedPods extends React.Component<Dependencies> {
|
||||
tooltip={pod.getNodeName()}
|
||||
expandable={false}
|
||||
>
|
||||
<Link to={getDetailsUrl(nodeApi.getUrl({ name: pod.getNodeName() }))} onClick={stopPropagation}>
|
||||
<Link
|
||||
to={getDetailsUrl(nodeApi.getUrl({ name: pod.getNodeName() }))}
|
||||
onClick={stopPropagation}>
|
||||
{pod.getNodeName()}
|
||||
</Link>
|
||||
</Badge>
|
||||
@ -210,6 +227,5 @@ export const Pods = withInjectables<Dependencies>(NonInjectedPods, {
|
||||
nodeApi: di.inject(nodeApiInjectable),
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
podStore: di.inject(podStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -13,8 +13,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,12 +13,10 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { ReplicaSetStore } from "./store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import replicaSetStoreInjectable from "./store.injectable";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -32,13 +30,11 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
replicaSetStore: ReplicaSetStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const NonInjectedReplicaSets = observer((props: Dependencies) => {
|
||||
const {
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
replicaSetStore,
|
||||
} = props;
|
||||
|
||||
@ -65,22 +61,34 @@ const NonInjectedReplicaSets = observer((props: Dependencies) => {
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ className: "warning", showWithColumn: columnId.name },
|
||||
{ title: "Namespace", className: "namespace", sortBy: columnId.namespace, id: columnId.namespace },
|
||||
{ title: "Desired", className: "desired", sortBy: columnId.desired, id: columnId.desired },
|
||||
{ title: "Current", className: "current", sortBy: columnId.current, id: columnId.current },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{
|
||||
title: "Desired",
|
||||
className: "desired",
|
||||
sortBy: columnId.desired,
|
||||
id: columnId.desired,
|
||||
},
|
||||
{
|
||||
title: "Current",
|
||||
className: "current",
|
||||
sortBy: columnId.current,
|
||||
id: columnId.current,
|
||||
},
|
||||
{ title: "Ready", className: "ready", sortBy: columnId.ready, id: columnId.ready },
|
||||
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
|
||||
]}
|
||||
renderTableContents={replicaSet => [
|
||||
replicaSet.getName(),
|
||||
<KubeObjectStatusIcon key="icon" object={replicaSet} />,
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(replicaSet.getNs()))}
|
||||
>
|
||||
{replicaSet.getNs()}
|
||||
</a>,
|
||||
namespace={replicaSet.getNs()}
|
||||
/>,
|
||||
replicaSet.getDesired(),
|
||||
replicaSet.getCurrent(),
|
||||
replicaSet.getReady(),
|
||||
@ -95,7 +103,6 @@ export const ReplicaSets = withInjectables<Dependencies>(NonInjectedReplicaSets,
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
replicaSetStore: di.inject(replicaSetStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -17,8 +17,6 @@
|
||||
@include table-cell-warning;
|
||||
}
|
||||
|
||||
a.filterNamespace {
|
||||
border-bottom: unset;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,12 +14,10 @@ import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
|
||||
import { KubeObjectAge } from "../kube-object/age";
|
||||
import type { StatefulSetStore } from "./store";
|
||||
import type { EventStore } from "../+events/store";
|
||||
import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||
import eventStoreInjectable from "../+events/store.injectable";
|
||||
import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable";
|
||||
import statefulSetStoreInjectable from "./store.injectable";
|
||||
import { prevDefault } from "../../utils";
|
||||
import { NamespaceSelectBadge } from "../+namespaces/namespace-select-badge";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -32,7 +30,6 @@ enum columnId {
|
||||
interface Dependencies {
|
||||
statefulSetStore: StatefulSetStore;
|
||||
eventStore: EventStore;
|
||||
filterByNamespace: FilterByNamespace;
|
||||
}
|
||||
|
||||
const renderPodCounts = (statefulSet: StatefulSet) => {
|
||||
@ -44,7 +41,6 @@ const renderPodCounts = (statefulSet: StatefulSet) => {
|
||||
const NonInjectedStatefulSets = observer((props: Dependencies) => {
|
||||
const {
|
||||
eventStore,
|
||||
filterByNamespace,
|
||||
statefulSetStore,
|
||||
} = props;
|
||||
|
||||
@ -68,21 +64,28 @@ const NonInjectedStatefulSets = observer((props: Dependencies) => {
|
||||
renderHeaderTitle="Stateful Sets"
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
{ title: "Namespace", className: "namespace", sortBy: columnId.namespace, id: columnId.namespace },
|
||||
{
|
||||
title: "Namespace",
|
||||
className: "namespace",
|
||||
sortBy: columnId.namespace,
|
||||
id: columnId.namespace,
|
||||
},
|
||||
{ title: "Pods", className: "pods", id: columnId.pods },
|
||||
{ title: "Replicas", className: "replicas", sortBy: columnId.replicas, id: columnId.replicas },
|
||||
{
|
||||
title: "Replicas",
|
||||
className: "replicas",
|
||||
sortBy: columnId.replicas,
|
||||
id: columnId.replicas,
|
||||
},
|
||||
{ className: "warning", showWithColumn: columnId.replicas },
|
||||
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
|
||||
]}
|
||||
renderTableContents={statefulSet => [
|
||||
statefulSet.getName(),
|
||||
<a
|
||||
<NamespaceSelectBadge
|
||||
key="namespace"
|
||||
className="filterNamespace"
|
||||
onClick={prevDefault(() => filterByNamespace(statefulSet.getNs()))}
|
||||
>
|
||||
{statefulSet.getNs()}
|
||||
</a>,
|
||||
namespace={statefulSet.getNs()}
|
||||
/>,
|
||||
renderPodCounts(statefulSet),
|
||||
statefulSet.getReplicas(),
|
||||
<KubeObjectStatusIcon key="icon" object={statefulSet} />,
|
||||
@ -97,7 +100,6 @@ export const StatefulSets = withInjectables<Dependencies>(NonInjectedStatefulSet
|
||||
getProps: (di, props) => ({
|
||||
...props,
|
||||
eventStore: di.inject(eventStoreInjectable),
|
||||
filterByNamespace: di.inject(filterByNamespaceInjectable),
|
||||
statefulSetStore: di.inject(statefulSetStoreInjectable),
|
||||
}),
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user