// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import {Box, Cards, CardsProps, ContentLayout, Link} from "@cloudscape-design/components"; import * as React from "react"; import {useContext, useEffect, useState} from "react"; import {ApiResponseState, get, ResultList} from "../../util/ApiClient"; import {JobModel} from "../jobs/JobModel"; import {NotificationContext} from "../../contexts/NotificationContext"; import {apiPathJobs} from "../jobs/JobsDefinitions"; import Header from "@cloudscape-design/components/header"; import {formattedDateTime} from "../../util/Formatter"; export const LandingPage = () => { const [apiData, setApiData] = useState>>({ responseBody: {Results: []}, error: null, loading: false }); const {setNotifications} = useContext(NotificationContext); function loadLatestJobsFromApi() { setApiData({responseBody: {Results: []}, error: null, loading: true}); get>(`${apiPathJobs}`, {queryStringParameters: {'selection': 'latest'}}).then((result) => { setApiData(result); if (result.error) { setNotifications([{ header: result.error.Error, content: result.error.Message, type: 'error', dismissible: true, onDismiss: () => setNotifications([]) }]); } else { setNotifications([]); } }); } useEffect(() => { loadLatestJobsFromApi(); }, []); const cardDefinition: CardsProps.CardDefinition = { header: item => { let assessmentType = item.AssessmentType; while (assessmentType.indexOf(('_')) > -1) { assessmentType = assessmentType.replace('_', '-'); } return ( {assessmentType} ); }, sections: [ { id: "JobStatus", header: "Job Status", content: item => item.JobStatus }, { id: "FinishedAt", header: "Finished At", content: item => formattedDateTime(item.FinishedAt) || '-' }, { id: "StartedBy", header: "Started By", content: item => item.StartedBy }, { id: "JobId", header: "Job ID", content: item => {item.JobId} } ] }; return ( Welcome } >
No Assessments No assessments have been started yet. } header={
Most Recent Assessments
} >
); }