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