/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { useHistory } from "react-router-dom"; import { useForm } from "react-hook-form"; import { useTopicAreas, useSettings, useChangeBackgroundColor } from "../hooks"; import BackendService from "../services/BackendService"; import TextField from "../components/TextField"; import Dropdown from "../components/Dropdown"; import Button from "../components/Button"; import Breadcrumbs from "../components/Breadcrumbs"; import Spinner from "../components/Spinner"; import DashboardHeader from "../components/DashboardHeader"; import PrimaryActionBar from "../components/PrimaryActionBar"; import Link from "../components/Link"; import { useTranslation } from "react-i18next"; import { TopicAreaSortingCriteria } from "../models"; interface FormValues { name: string; topicAreaId: string; description: string; } function CreateDashboard() { const history = useHistory(); const { settings } = useSettings(); const { topicareas, loading } = useTopicAreas(); const { register, errors, handleSubmit, watch } = useForm(); const sortedTopicAreas = [...topicareas].sort(TopicAreaSortingCriteria); const name = watch("name"); const description = watch("description"); const topicAreaId = watch("topicAreaId"); const { t } = useTranslation(); const onSubmit = async (values: FormValues) => { const dashboard = await BackendService.createDashboard( values.name, values.topicAreaId, values.description || "", ); history.push(`/admin/dashboard/edit/${dashboard.id}`, { alert: { type: "success", message: `"${dashboard.name}" ${t("CreateEditDashboardSuccess")}`, }, id: "top-alert", }); }; const getTopicAreaName = (topicAreaId: string) => { return topicareas.find((t) => t.id === topicAreaId)?.name || ""; }; const onCancel = () => { history.push("/admin/dashboards"); }; useChangeBackgroundColor(); if (loading) { return ; } return ( <>

{t("CreateDashboard")}

({ value: topicarea.id, label: topicarea.name, }))} required /> {t("CreateEditDashboardDetails")}{" "} {t("CreateEditDashboardDetailsLink")} } register={register} multiline rows={10} />

); } export default CreateDashboard;