1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Add quick namespace filtering to PortForwards view

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-11-30 08:59:48 -05:00
parent f3bc213c4b
commit b765ad61ea
2 changed files with 23 additions and 16 deletions

View File

@ -13,5 +13,9 @@
@include port-forward-status-colors; @include port-forward-status-colors;
flex: 0.6; flex: 0.6;
} }
a.filterNamespace {
border-bottom: unset;
}
} }
} }

View File

@ -19,6 +19,9 @@ import { computed, makeObservable } from "mobx";
import portForwardsRouteParametersInjectable from "./port-forwards-route-parameters.injectable"; 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 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 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";
enum columnId { enum columnId {
name = "name", name = "name",
@ -34,6 +37,7 @@ interface Dependencies {
portForwardStore: PortForwardStore; portForwardStore: PortForwardStore;
forwardport: IComputedValue<string>; forwardport: IComputedValue<string>;
navigateToPortForwards: NavigateToPortForwards; navigateToPortForwards: NavigateToPortForwards;
filterByNamespace: FilterByNamespace;
} }
@observer @observer
@ -128,7 +132,13 @@ class NonInjectedPortForwards extends React.Component<Dependencies> {
]} ]}
renderTableContents={item => [ renderTableContents={item => [
item.getName(), item.getName(),
item.getNs(), <a
key="namespace"
className="filterNamespace"
onClick={prevDefault(() => this.props.filterByNamespace(item.getNs()))}
>
{item.getNs()}
</a>,
item.getKind(), item.getKind(),
item.getPort(), item.getPort(),
item.getForwardPort(), item.getForwardPort(),
@ -158,19 +168,12 @@ class NonInjectedPortForwards extends React.Component<Dependencies> {
} }
} }
export const PortForwards = withInjectables<Dependencies>( export const PortForwards = withInjectables<Dependencies>(NonInjectedPortForwards, {
NonInjectedPortForwards, getProps: (di) => ({
portForwardStore: di.inject(portForwardStoreInjectable),
{ ...di.inject(portForwardsRouteParametersInjectable),
getProps: (di) => { navigateToPortForwards: di.inject(navigateToPortForwardsInjectable),
const routeParameters = di.inject(portForwardsRouteParametersInjectable); filterByNamespace: di.inject(filterByNamespaceInjectable),
}),
return { });
portForwardStore: di.inject(portForwardStoreInjectable),
forwardport: routeParameters.forwardport,
navigateToPortForwards: di.inject(navigateToPortForwardsInjectable),
};
},
},
);