/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import React, { useMemo, useState } from "react";
import { EuiButton, EuiContextMenu } from "@elastic/eui";
import { RouteComponentProps } from "react-router-dom";
import SimplePopover from "../../../../components/SimplePopover";
import DeleteIndexModal from "../DeleteAliasModal";
import ClearCacheModal from "../../../../containers/ClearCacheModal";
import FlushIndexModal from "../../../../containers/FlushIndexModal";
import RefreshActionModal from "../../../../containers/RefreshAction";
import { IAlias } from "../../interface";
import { ROUTES, INDEX_OP_TARGET_TYPE } from "../../../../utils/constants";
export interface AliasesActionsProps {
selectedItems: IAlias[];
onDelete: () => void;
onUpdateAlias: () => void;
history: RouteComponentProps["history"];
}
export default function AliasesActions(props: AliasesActionsProps) {
const { selectedItems, onDelete, onUpdateAlias, history } = props;
const [deleteIndexModalVisible, setDeleteIndexModalVisible] = useState(false);
const [clearCacheModalVisible, setClearCacheModalVisible] = useState(false);
const [flushAliasModalVisible, setFlushAliasModalVisible] = useState(false);
const [refreshModalVisible, setRefreshModalVisible] = useState(false);
const onDeleteIndexModalClose = () => {
setDeleteIndexModalVisible(false);
};
const onClearCacheModalClose = () => {
setClearCacheModalVisible(false);
};
const onFlushAliasModalClose = () => {
setFlushAliasModalVisible(false);
};
const onRefreshModalClose = () => {
setRefreshModalVisible(false);
};
const renderKey = useMemo(() => Date.now(), [selectedItems]);
return (
<>
Actions
}
>
{
props.history.push(`${ROUTES.FORCE_MERGE}/${selectedItems.map((item) => item.alias).join(",")}`);
},
},
{
name: "Roll over",
disabled: selectedItems.length > 1,
"data-test-subj": "rolloverAction",
onClick: () => history.push(selectedItems.length ? `${ROUTES.ROLLOVER}/${selectedItems[0].alias}` : ROUTES.ROLLOVER),
},
{
isSeparator: true,
},
{
name: "Clear cache",
disabled: selectedItems.length < 1,
"data-test-subj": "ClearCacheAction",
onClick: () => setClearCacheModalVisible(true),
},
{
name: "Flush",
disabled: !selectedItems.length,
"data-test-subj": "Flush Action",
onClick: () => setFlushAliasModalVisible(true),
},
{
name: "Refresh",
disabled: !selectedItems.length,
"data-test-subj": "refreshAction",
onClick: () => setRefreshModalVisible(true),
},
{
isSeparator: true,
},
{
name: "Delete",
disabled: !selectedItems.length,
"data-test-subj": "deleteAction",
onClick: () => setDeleteIndexModalVisible(true),
},
],
},
]}
/>
{
onDeleteIndexModalClose();
onDelete();
}}
/>
>
);
}