/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React, { useMemo, useState } from "react"; import { LocationState, TopicArea } from "../models"; import Button from "../components/Button"; import BackendService from "../services/BackendService"; import Modal from "../components/Modal"; import { useHistory } from "react-router-dom"; import { useTranslation } from "react-i18next"; import DropdownMenu from "../components/DropdownMenu"; import Table from "../components/Table"; const MenuItem = DropdownMenu.MenuItem; interface Props { topicareas: Array; reloadTopicAreas: Function; } function TopicareaListing(props: Props) { const history = useHistory(); const [isOpenDeleteModal, setIsOpenDeleteModal] = useState(false); const [selected, setSelected] = useState(undefined); const { t } = useTranslation(); const createTopicArea = () => { history.push("/admin/settings/topicarea/create"); }; const onEdit = () => { if (selected) { history.push(`/admin/settings/topicarea/${selected.id}/edit`); } }; const onSelect = (selectedTopicArea: Array) => { if (selectedTopicArea.length > 0) { setSelected(selectedTopicArea[0]); } }; const closeDeleteModal = () => { setIsOpenDeleteModal(false); }; const onDeleteTopicArea = () => { setIsOpenDeleteModal(true); }; const deleteTopicArea = async () => { closeDeleteModal(); if (selected) { await BackendService.deleteTopicArea(selected.id); history.replace("/admin/settings/topicarea", { alert: { type: "success", message: t("SettingsTopicAreaNameSuccessfullyDeleted", { name: `${selected.name}`, }), }, }); await props.reloadTopicAreas(); } }; return ( <>

{`${t("TopicArea", { count: props.topicareas.length, })} (${props.topicareas.length})`}

{t("TopicAreaListingDescription")}

onDeleteTopicArea()} disabled={!selected || selected.dashboardCount > 0} aria-label={t("ARIA.TopicAreaListingDelete")} > {t("Delete")} {t("Edit")}
[ { Header: t("TopicArea"), accessor: "name", Cell: (props: any) => { const topicArea = props.row.original as TopicArea; return ( {topicArea.name} ); }, }, { Header: t("Dashboards"), accessor: "dashboardCount", Cell: (props: any) => { const topicArea = props.row.original as TopicArea; return `${ topicArea.dashboardCount ? topicArea.dashboardCount : "-" }`; }, }, { Header: t("CreatedBy"), accessor: "createdBy", }, ], [t], )} rows={props.topicareas} /> ); } export default TopicareaListing;