| Current File : /home/digitaw/www/wp-content/updraft/plugins-old/simple-history/src/components/EventInfoModal.jsx |
import apiFetch from '@wordpress/api-fetch';
import { Modal, __experimentalText as Text } from '@wordpress/components';
import { useEffect, useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { addQueryArgs } from '@wordpress/url';
import { Event } from './Event';
export function EventInfoModal( props ) {
const { eventId, closeModal = null } = props;
const [ loadedEvent, setLoadedEvent ] = useState( null );
const [ isLoadingContext, setIsLoadingContext ] = useState( true );
/**
* Load event from the REST API.
*/
useEffect( () => {
const loadEventContext = async () => {
setIsLoadingContext( true );
const eventsQueryParams = {
_fields: [
'id',
'logger',
'occasions_id',
'subsequent_occasions_count',
'initiator_data',
'loglevel',
'message',
'message_html',
'message_key',
'details_data',
'details_html',
'message_uninterpolated',
'date',
'date_gmt',
'message',
'context',
'ip_addresses',
'details_data',
'via',
'initiator',
],
};
const eventResponse = await apiFetch( {
path: addQueryArgs(
'/simple-history/v1/events/' + eventId,
eventsQueryParams
),
// Skip parsing to be able to retrieve headers.
parse: false,
} );
const eventJson = await eventResponse.json();
setLoadedEvent( eventJson );
setIsLoadingContext( false );
};
loadEventContext();
}, [ eventId ] );
return (
<Modal
title={ __( 'Event details', 'simple-history' ) }
onRequestClose={ closeModal }
>
<div className="SimpleHistory__modal">
{ isLoadingContext ? (
__( 'Loading detailed events data…', 'simple-history' )
) : (
<>
<Event event={ loadedEvent } variant="modal" />
<p>
<Text>
{ __(
'This is potentially useful information and meta data that a logger has saved.',
'simple-history'
) }
</Text>
</p>
<h2>{ __( 'Event details', 'simple-history' ) }</h2>
<table className="SimpleHistoryLogitem__moreDetailsContext">
<thead>
<tr>
<th>{ __( 'Key', 'simple-history' ) }</th>
<th>{ __( 'Value', 'simple-history' ) }</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>{ loadedEvent.id }</td>
</tr>
<tr>
<td>logger</td>
<td>{ loadedEvent.logger }</td>
</tr>
<tr>
<td>level</td>
<td>{ loadedEvent.loglevel }</td>
</tr>
<tr>
<td>date</td>
<td>{ loadedEvent.date }</td>
</tr>
<tr>
<td>message</td>
<td>{ loadedEvent.message }</td>
</tr>
<tr>
<td>message_uninterpolated</td>
<td>
{ loadedEvent.message_uninterpolated }
</td>
</tr>
<tr>
<td>initiator</td>
<td>{ loadedEvent.initiator }</td>
</tr>
<tr>
<td>occasions_id</td>
<td>{ loadedEvent.occasions_id }</td>
</tr>
<tr>
<td>subsequent_occasions_count</td>
<td>
{
loadedEvent.subsequent_occasions_count
}
</td>
</tr>
<tr>
<td>via</td>
<td>{ loadedEvent.via }</td>
</tr>
</tbody>
</table>
<h2>{ __( 'Event context', 'simple-history' ) }</h2>
<table className="SimpleHistoryLogitem__moreDetailsContext">
<thead>
<tr>
<th>{ __( 'Key', 'simple-history' ) }</th>
<th>{ __( 'Value', 'simple-history' ) }</th>
</tr>
</thead>
<tbody>
{ /* All key, values from context */ }
{ Object.entries(
loadedEvent.context || {}
).map( ( [ key, value ] ) => {
return (
<tr key={ key }>
<td>{ key }</td>
<td>{ value }</td>
</tr>
);
} ) }
</tbody>
</table>
</>
) }
</div>
</Modal>
);
}