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

Clean up unneded changes

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2023-03-03 17:12:40 +03:00
parent e4b6541727
commit 79c0da5dae
4 changed files with 50 additions and 203 deletions

View File

@ -1,28 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { Namespace } from "../../../common/k8s-api/endpoints";
import removeSubnamespaceInjectable from "./remove-subnamespace.injectable";
import namespaceStoreInjectable from "./store.injectable";
const deleteNamespaceInjectable = getInjectable({
id: "delete-namespace",
instantiate: (di) => {
const namespaceStore = di.inject(namespaceStoreInjectable);
const removeSubnamespace = di.inject(removeSubnamespaceInjectable);
return async (namespace: Namespace) => {
if (namespace.isSubnamespace()) {
return await removeSubnamespace(namespace.getName());
}
return await namespaceStore.remove(namespace);
}
}
});
export default deleteNamespaceInjectable;

View File

@ -1,73 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { withInjectables } from "@ogre-tools/injectable-react";
import React from "react";
import type { Namespace } from "../../../common/k8s-api/endpoints";
import type { KubeObject } from "../../../common/k8s-api/kube-object";
import withConfirmationInjectable, { WithConfirmation } from "../confirm-dialog/with-confirm.injectable";
import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource-tab.injectable";
import { Icon } from "../icon";
import { MenuItem } from "../menu";
import type { MenuActionsProps } from "../menu/menu-actions";
import { MenuActions } from "../menu/menu-actions";
import deleteNamespaceInjectable from "./delete-namespace.injectable";
import type { NamespaceStore } from "./store";
import namespaceStoreInjectable from "./store.injectable";
export interface NamespaceMenuProps extends MenuActionsProps {
namespace: Namespace;
}
interface Dependencies {
readonly namespaceStore: NamespaceStore;
readonly createEditResourceTab: (kubeObject: KubeObject) => void;
readonly withConfirmation: WithConfirmation;
readonly deleteNamespace: (namespace: Namespace) => Promise<void>;
}
function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) {
const { namespace, namespaceStore, deleteNamespace, createEditResourceTab, withConfirmation } = props;
const remove = async () => {
deleteNamespace(namespace);
namespaceStore.clearSelected();
};
const renderRemoveMessage = (object: KubeObject) => {
return (
<p>
Remove <b>{object.getName()}</b>?
</p>
);
}
return (
<MenuActions {...props}>
<MenuItem onClick={() => createEditResourceTab(namespace)}>
<Icon material="edit" interactive={false} tooltip="Edit" />
<span className="title">Edit</span>
</MenuItem>
<MenuItem onClick={withConfirmation({
message: renderRemoveMessage(namespace),
labelOk: "Remove",
ok: remove,
})}>
<Icon material="delete" interactive={false} tooltip="Delete" />
<span className="title">Delete</span>
</MenuItem>
</MenuActions>
);
}
export const NamespaceMenu = withInjectables<Dependencies, NamespaceMenuProps>(NonInjectedNamespaceMenu, {
getProps: (di, props) => ({
...props,
namespaceStore: di.inject(namespaceStoreInjectable),
createEditResourceTab: di.inject(createEditResourceTabInjectable),
withConfirmation: di.inject(withConfirmationInjectable),
deleteNamespace: di.inject(deleteNamespaceInjectable),
}),
});

View File

@ -17,12 +17,6 @@ import namespaceStoreInjectable from "./store.injectable";
import { KubeObjectAge } from "../kube-object/age"; import { KubeObjectAge } from "../kube-object/age";
import openAddNamepaceDialogInjectable from "./add-dialog/open.injectable"; import openAddNamepaceDialogInjectable from "./add-dialog/open.injectable";
import { SubnamespaceBadge } from "./subnamespace-badge"; import { SubnamespaceBadge } from "./subnamespace-badge";
import { NamespaceMenu } from "./namespace-menu";
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
import type { Namespace } from "../../../common/k8s-api/endpoints";
import deleteNamespaceInjectable from "./delete-namespace.injectable";
import { observer } from "mobx-react";
enum columnId { enum columnId {
name = "name", name = "name",
@ -34,105 +28,64 @@ enum columnId {
interface Dependencies { interface Dependencies {
namespaceStore: NamespaceStore; namespaceStore: NamespaceStore;
openAddNamespaceDialog: () => void; openAddNamespaceDialog: () => void;
openConfirmDialog: OpenConfirmDialog;
deleteNamespace: (namespace: Namespace) => Promise<void>;
} }
const NonInjectedNamespacesRoute = observer(({ namespaceStore, openAddNamespaceDialog, openConfirmDialog, deleteNamespace }: Dependencies) => { const NonInjectedNamespacesRoute = ({ namespaceStore, openAddNamespaceDialog }: Dependencies) => (
function onConfirm() { <TabLayout>
const namespaces = namespaceStore.selectedItems; <KubeObjectListLayout
isConfigurable
namespaces.forEach(deleteNamespace); tableId="namespaces"
} className="Namespaces"
store={namespaceStore}
const openRemoveNamespaceDialog = () => { sortingCallbacks={{
const namespaces = namespaceStore.selectedItems; [columnId.name]: namespace => namespace.getName(),
const message = ( [columnId.labels]: namespace => namespace.getLabels(),
<div> [columnId.age]: namespace => -namespace.getCreationTimestamp(),
[columnId.status]: namespace => namespace.getStatus(),
}}
searchFilters={[
namespace => namespace.getSearchFields(),
namespace => namespace.getStatus(),
]}
renderHeaderTitle="Namespaces"
renderTableHeader={[
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
{ className: "warning", showWithColumn: columnId.name },
{ title: "Labels", className: "labels scrollable", sortBy: columnId.labels, id: columnId.labels },
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
{ title: "Status", className: "status", sortBy: columnId.status, id: columnId.status },
]}
renderTableContents={namespace => [
<> <>
Remove following namespaces? {namespace.getName()}
{" "} {namespace.isSubnamespace() && (
<div className="confirm-dialog-scrollable-content"> <SubnamespaceBadge className="subnamespaceBadge" id={`namespace-list-badge-for-${namespace.getId()}`} />
{namespaces.map(namespace => ( )}
<li key={namespace.getId()}>{namespace.getName()}</li> </>,
))} <KubeObjectStatusIcon key="icon" object={namespace} />,
</div> namespace.getLabels().map(label => (
</> <Badge
</div> scrollable
); key={label}
label={label}
openConfirmDialog({
ok: onConfirm,
labelOk: "Remove",
message,
});
}
return (
<TabLayout>
<KubeObjectListLayout
isConfigurable
tableId="namespaces"
className="Namespaces"
store={namespaceStore}
sortingCallbacks={{
[columnId.name]: namespace => namespace.getName(),
[columnId.labels]: namespace => namespace.getLabels(),
[columnId.age]: namespace => -namespace.getCreationTimestamp(),
[columnId.status]: namespace => namespace.getStatus(),
}}
searchFilters={[
namespace => namespace.getSearchFields(),
namespace => namespace.getStatus(),
]}
renderHeaderTitle="Namespaces"
renderTableHeader={[
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
{ className: "warning", showWithColumn: columnId.name },
{ title: "Labels", className: "labels scrollable", sortBy: columnId.labels, id: columnId.labels },
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
{ title: "Status", className: "status", sortBy: columnId.status, id: columnId.status },
]}
renderTableContents={namespace => [
<>
{namespace.getName()}
{namespace.isSubnamespace() && (
<SubnamespaceBadge className="subnamespaceBadge" id={`namespace-list-badge-for-${namespace.getId()}`} />
)}
</>,
<KubeObjectStatusIcon key="icon" object={namespace} />,
namespace.getLabels().map(label => (
<Badge
scrollable
key={label}
label={label}
/>
)),
<KubeObjectAge key="age" object={namespace} />,
{ title: namespace.getStatus(), className: namespace.getStatus().toLowerCase() },
]}
addRemoveButtons={{
addTooltip: "Add Namespace",
onAdd: openAddNamespaceDialog,
onRemove: namespaceStore.selectedItems.length > 0 ? openRemoveNamespaceDialog : undefined,
}}
renderItemMenu={namespace => (
<NamespaceMenu
namespace={namespace}
/> />
)} )),
/> <KubeObjectAge key="age" object={namespace} />,
<AddNamespaceDialog/> { title: namespace.getStatus(), className: namespace.getStatus().toLowerCase() },
</TabLayout> ]}
); addRemoveButtons={{
}); addTooltip: "Add Namespace",
onAdd: openAddNamespaceDialog,
}}
/>
<AddNamespaceDialog/>
</TabLayout>
);
export const NamespacesRoute = withInjectables<Dependencies>(NonInjectedNamespacesRoute, { export const NamespacesRoute = withInjectables<Dependencies>(NonInjectedNamespacesRoute, {
getProps: (di) => ({ getProps: (di) => ({
namespaceStore: di.inject(namespaceStoreInjectable), namespaceStore: di.inject(namespaceStoreInjectable),
openAddNamespaceDialog: di.inject(openAddNamepaceDialogInjectable), openAddNamespaceDialog: di.inject(openAddNamepaceDialogInjectable),
openConfirmDialog: di.inject(openConfirmDialogInjectable),
deleteNamespace: di.inject(deleteNamespaceInjectable),
}), }),
}); });

View File

@ -41,11 +41,6 @@
font-size: small; font-size: small;
margin-top: $margin; margin-top: $margin;
} }
.confirm-dialog-scrollable-content {
overflow: auto;
max-height: 200px;
}
} }
.confirm-buttons { .confirm-buttons {