data structure change, tweak messages display

This commit is contained in:
Matthias Kretschmann 2022-10-19 12:39:01 +01:00
parent b7fa93cd10
commit a0bcd34c98
Signed by: m
GPG Key ID: 606EEEF3C479A91F
3 changed files with 68 additions and 86 deletions

View File

@ -11,19 +11,21 @@ export enum State {
export interface Status { export interface Status {
network: string network: string
currentBlock: number currentBlock: number
market: State lastUpdatedOn: number
components: {
market: ComponentStatusBase
faucet: FaucetStatus | Record<string, never> faucet: FaucetStatus | Record<string, never>
aquarius: AquariusStatus aquarius: AquariusStatus
provider: ProviderStatus provider: ProviderStatus
subgraph: SubgraphStatus subgraph: SubgraphStatus
operator: OperatorStatus operator: OperatorStatus
dataFarming: State dataFarming: ComponentStatusBase
lastUpdatedOn: number }
} }
export interface ComponentStatusBase { export interface ComponentStatusBase {
status: State status: State
statusMessages: string statusMessages: string[]
response: number response: number
version: string version: string
} }

View File

@ -66,41 +66,18 @@ export default function HomePage(): ReactElement {
{isLoading ? ( {isLoading ? (
<div className={styles.loading}>Loading...</div> <div className={styles.loading}>Loading...</div>
) : ( ) : (
Object.entries(data || {}).map(([key, value]) => { Object.entries(data || {}).map(([networkName, value]) => (
const networkKey = key <Fragment key={networkName}>
<h2 className={styles.networkName}>{networkName}</h2>
return (
<Fragment key={networkKey}>
<h2 className={styles.networkName}>{networkKey}</h2>
<div className={styles.grid}> <div className={styles.grid}>
{Object.entries(value) {Object.entries(value.components).map(
.filter( ([componentName, value]) => (
// TODO: Remove this filter if we fix this on API level
// Needs a new `components` key under Status response
([key]) =>
key !== 'currentBlock' &&
key !== 'lastUpdatedOn' &&
key !== 'network' &&
key !== '_id' &&
key !== '__v'
)
.map(([key, value]) => (
<div <div
key={key} key={componentName}
className={`${styles.card} ${statusStyle( className={`${styles.card} ${statusStyle(value.status)}`}
// TODO: all component states should be of type Status on API level
key === 'market' || key === 'dataFarming'
? value
: value.status
)}`}
> >
<h2 className={styles.titleComponent}> <h2 className={styles.titleComponent}>
{statusIcon( {statusIcon(value.status)} {componentName}
key === 'market' || key === 'dataFarming'
? value
: value.status
)}{' '}
{key}
<code <code
className={styles.version} className={styles.version}
title="deployed version" title="deployed version"
@ -109,29 +86,28 @@ export default function HomePage(): ReactElement {
</code> </code>
</h2> </h2>
{value.statusMessages && value.statusMessages !== '' && ( {value.statusMessages?.length ? (
<ul className={styles.messages}> <ul className={styles.messages}>
{value.statusMessages {value.statusMessages.map(
.split(',') (message: string, i: number) => (
.map((message: string, i: number) => (
<li key={i} className={styles.statusMessage}> <li key={i} className={styles.statusMessage}>
{message} {message}
</li> </li>
))} )
</ul>
)} )}
</ul>
) : null}
</div> </div>
))} )
)}
</div> </div>
<details className={styles.contracts}> <details className={styles.contracts}>
<summary> <summary>
<h3 className={styles.titleComponent}> <h3 className={styles.titleComponent}>Deployed Contracts</h3>
Deployed Contracts
</h3>
</summary> </summary>
<ul> <ul>
{Object.entries((addresses as any)[networkKey]).map( {Object.entries((addresses as any)[networkName]).map(
([key, value]) => ([key, value]) =>
key !== 'chainId' && key !== 'chainId' &&
key !== 'startBlock' && ( key !== 'startBlock' && (
@ -144,8 +120,7 @@ export default function HomePage(): ReactElement {
</ul> </ul>
</details> </details>
</Fragment> </Fragment>
) ))
})
)} )}
</main> </main>

View File

@ -92,12 +92,17 @@
list-style-type: square; list-style-type: square;
margin-left: 1rem; margin-left: 1rem;
margin-top: calc(var(--spacer) / 4); margin-top: calc(var(--spacer) / 4);
color: var(--color-secondary);
font-size: var(--font-size-small);
} }
.messages li { .messages li {
display: list-item; display: list-item;
margin-top: calc(var(--spacer) / 8); margin-top: calc(var(--spacer) / 8);
list-style-position: outside; list-style-position: outside;
}
.warning .messages {
color: var(--brand-alert-orange); color: var(--brand-alert-orange);
} }