/* eslint-disable */
// @ts-nocheck
import {
AlertVariant,
Button,
ButtonVariant,
ExpandableSection,
FormGroup,
Split,
SplitItem,
ToolbarItem,
} from "../../../shared/@patternfly/react-core";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { HelpItem } from "../../../shared/keycloak-ui-shared";
import { useAdminClient } from "../../admin-client";
import { useAlerts } from "../../../shared/keycloak-ui-shared";
import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog";
import { FormAccess } from "../../components/form/FormAccess";
import { ListEmptyState } from "../../../shared/keycloak-ui-shared";
import { Action, KeycloakDataTable } from "../../../shared/keycloak-ui-shared";
import { TimeSelectorForm } from "../../components/time-selector/TimeSelectorForm";
import useFormatDate, { FORMAT_DATE_AND_TIME } from "../../utils/useFormatDate";
import { AddHostDialog } from ".././advanced/AddHostDialog";
import { AdvancedProps, parseResult } from "../AdvancedTab";
type Node = {
host: string;
registration: string;
};
export const ClusteringPanel = ({
save,
client: { id, registeredNodes, access },
}: AdvancedProps) => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const { addAlert, addError } = useAlerts();
const formatDate = useFormatDate();
const [nodes, setNodes] = useState(registeredNodes || {});
const [expanded, setExpanded] = useState(false);
const [selectedNode, setSelectedNode] = useState("");
const [addNodeOpen, setAddNodeOpen] = useState(false);
const [key, setKey] = useState(0);
const refresh = () => setKey(new Date().getTime());
const testCluster = async () => {
const result = await adminClient.clients.testNodesAvailable({ id: id! });
parseResult(result, "testCluster", addAlert, t);
};
const [toggleDeleteNodeConfirm, DeleteNodeConfirm] = useConfirmDialog({
titleKey: "deleteNode",
messageKey: t("deleteNodeBody", {
node: selectedNode,
}),
continueButtonLabel: "delete",
continueButtonVariant: ButtonVariant.danger,
onConfirm: async () => {
try {
await adminClient.clients.deleteClusterNode({
id: id!,
node: selectedNode,
});
setNodes({
...Object.keys(nodes).reduce((object: any, key) => {
if (key !== selectedNode) {
object[key] = nodes[key];
}
return object;
}, {}),
});
refresh();
addAlert(t("deleteNodeSuccess"), AlertVariant.success);
} catch (error) {
addError("deleteNodeFail", error);
}
},
});
return (
<>
}
>
<>
{
nodes[node] = Date.now() / 1000;
refresh();
}}
onClose={() => setAddNodeOpen(false)}
/>
setExpanded(val)}
isExpanded={expanded}
>
Promise.resolve(
Object.entries(nodes).map((entry) => {
return { host: entry[0], registration: entry[1] };
}),
)
}
toolbarItem={
<>
>
}
actions={[
{
title: t("delete"),
onRowClick: (node) => {
setSelectedNode(node.host);
toggleDeleteNodeConfirm();
},
} as Action,
]}
columns={[
{
name: "host",
displayKey: "nodeHost",
},
{
name: "registration",
displayKey: "lastRegistration",
cellFormatters: [
(value) =>
value
? formatDate(
new Date(parseInt(value.toString()) * 1000),
FORMAT_DATE_AND_TIME,
)
: "",
],
},
]}
emptyState={
setAddNodeOpen(true)}
/>
}
/>
>
>
);
};