frontend/src/old-pages/Images/CustomImages/CustomImageStackEvents.tsx (48 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance // with the License. A copy of the License is located at // // http://aws.amazon.com/apache2.0/ // // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and // limitations under the License. import React from 'react' // Model import {GetCustomImageStackEvents} from '../../../model' import {getState, useState} from '../../../store' // UI Elements import {ExpandableSection} from '@cloudscape-design/components' // Components import DateView from '../../../components/date/DateView' import Loading from '../../../components/Loading' import {useTranslation} from 'react-i18next' type Event = { resourceStatus: string resourceStatusReason: string timestamp: string } function EventDetails({event}: {event: Event}) { const {t} = useTranslation() return ( <div style={{marginLeft: '20px'}}> <div> {t('customImages.imageDetails.stackEvents.status', { status: event.resourceStatus, })}{' '} (<DateView date={event.timestamp} />) </div> <div> {t('customImages.imageDetails.stackEvents.reason', { reason: event.resourceStatusReason, })} </div> </div> ) } export default function CustomImageStackEvents() { const selected = useState(['app', 'customImages', 'selected']) const events = useState([ 'customImages', 'index', selected, 'stackevents', 'events', ]) React.useEffect(() => { const selected = getState(['app', 'customImages', 'selected']) GetCustomImageStackEvents(selected) }, []) if (!events) return <Loading /> return events.map((event: any) => ( <ExpandableSection header={event.eventId} key={event.eventId}> <EventDetails event={event} /> </ExpandableSection> )) }