/* * 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 { usePublicHomepage } from "../hooks"; import { useTranslation } from "react-i18next"; import UtilsService from "../services/UtilsService"; import Accordion from "../components/Accordion"; import Search from "../components/Search"; import { PublicDashboard, LocationState, PublicTopicArea, Dashboard } from "../models"; import Spinner from "../components/Spinner"; import MarkdownRender from "../components/MarkdownRender"; import CardGroup from "../components/CardGroup"; import dayjs from "dayjs"; import LocalizedFormat from "dayjs/plugin/localizedFormat"; import "./Home.scss"; dayjs.extend(LocalizedFormat); function Home() { const { homepage, loading } = usePublicHomepage(); const { t } = useTranslation(); const history = useHistory(); const { Card, CardBody } = CardGroup; const onSearch = (query: string) => { history.push("/public/search?q=" + query); }; const onClear = () => { history.push("/"); }; const topicareas = UtilsService.groupByTopicArea(homepage.dashboards); // Sort topic areas and their dashboards in ascending alphabetical order. topicareas.sort((a: PublicTopicArea, b: PublicTopicArea) => a.name.localeCompare(b.name)); for (let topicArea of topicareas) { topicArea.dashboards?.sort((a: PublicDashboard, b: PublicDashboard) => a.name.localeCompare(b.name), ); } const getDashboardLink = (dashboard: PublicDashboard | Dashboard): string => { const link = dashboard.friendlyURL ? dashboard.friendlyURL : dashboard.id; return link; }; return loading ? ( ) : (

{homepage.title}

{topicareas.map((topicarea) => ( ))}
); } export default Home;