diff --git a/src/lib/components/elements/asset.svelte b/src/lib/components/elements/asset.svelte new file mode 100644 index 000000000..34ca8d825 --- /dev/null +++ b/src/lib/components/elements/asset.svelte @@ -0,0 +1,32 @@ + + + + {#if variant === 'full'} + {#if value} + {value.quantity} {value.symbol.name} + {:else} + {fallback} + {/if} + {:else if variant === 'quantity'} + {value?.quantity || fallback} + {:else} + {value?.value || fallback} + {/if} + diff --git a/src/lib/state/client/account.svelte.ts b/src/lib/state/client/account.svelte.ts index 96d542bbd..f4b5f4692 100644 --- a/src/lib/state/client/account.svelte.ts +++ b/src/lib/state/client/account.svelte.ts @@ -39,7 +39,7 @@ export class AccountState { public loaded: boolean = $state(false); public balance = $derived.by(() => - this.network ? getBalance(this.network, this.sources, this.ram) : undefined + this.network ? getBalance(this.network, this.sources) : undefined ); public balances = $derived.by(() => this.network @@ -52,7 +52,9 @@ export class AccountState { public ram = $derived.by(() => (this.account ? this.account.resource('ram') : undefined)); public permissions = $derived.by(() => (this.account ? this.account.permissions : undefined)); public value = $derived.by(() => { - return this.network && this.balance ? getAccountValue(this.network, this.balance) : undefined; + return this.network && this.balance && this.ram + ? getAccountValue(this.network, this.balance, this.ram) + : undefined; }); constructor(network: NetworkState, name: NameType, fetchOverride?: typeof fetch) { @@ -116,7 +118,11 @@ export interface AccountValue { total: Asset; } -export function getAccountValue(network: NetworkState, balance: Balance): AccountValue { +export function getAccountValue( + network: NetworkState, + balance: Balance, + ramResources: Resource +): AccountValue { const delegated = Asset.from('0.0000 USD'); const liquid = Asset.from('0.0000 USD'); const ram = Asset.from('0.0000 USD'); @@ -128,12 +134,13 @@ export function getAccountValue(network: NetworkState, balance: Balance): Accoun liquid.units.add(calculateValue(balance.liquid, network.tokenprice).units); staked.units.add(calculateValue(balance.staked, network.tokenprice).units); total.units.add(calculateValue(balance.total, network.tokenprice).units); - } - - if (network.ramprice?.usd) { - const ramValue = calculateValue(balance.ram, network.ramprice.usd); - ram.units.add(ramValue.units); - total.units.add(ramValue.units); + if (network.ramprice) { + const ramAsset = Asset.from(`${ramResources.max.dividing(1000)} RAM`); + const ramValue = calculateValue(ramAsset, network.ramprice.eos); + const ramUsdValue = calculateValue(ramValue, network.tokenprice); + ram.units.add(ramUsdValue.units); + total.units.add(ramUsdValue.units); + } } return { @@ -149,15 +156,10 @@ export interface Balance { delegated: Asset; liquid: Asset; staked: Asset; - ram: Asset; total: Asset; } -export function getBalance( - network: NetworkState, - sources: DataSources, - ramResources?: Resource -): Balance { +export function getBalance(network: NetworkState, sources: DataSources): Balance { if (!network) { throw new Error('Network not initialized'); } @@ -168,11 +170,10 @@ export function getBalance( const delegated = Asset.fromUnits(0, network.config.symbol); const liquid = Asset.fromUnits(0, network.config.symbol); const staked = Asset.fromUnits(0, network.config.symbol); - const ram = Asset.fromUnits(0, network.config.symbol); const total = Asset.fromUnits(0, network.config.symbol); if (!sources.get_account) { - return { delegated, liquid, staked, ram, total }; + return { delegated, liquid, staked, total }; } // Add the core balance if it exists on the account @@ -204,17 +205,9 @@ export function getBalance( } } - if (ramResources && network.ramprice) { - const asset = Asset.from(`${ramResources.max.dividing(1000)} RAM`); - const ramValue = calculateValue(asset, network.ramprice.eos); - ram.units.add(ramValue.units); - total.units.add(ramValue.units); - } - return { delegated, liquid, - ram, staked, total }; diff --git a/src/routes/[network]/(explorer)/account/[name]/+page.svelte b/src/routes/[network]/(explorer)/account/[name]/+page.svelte index 882909717..bd478ec09 100644 --- a/src/routes/[network]/(explorer)/account/[name]/+page.svelte +++ b/src/routes/[network]/(explorer)/account/[name]/+page.svelte @@ -1,10 +1,10 @@ {#if data.account} - - -
-
- {#if data.network.tokenmeta && data.network.tokenmeta.length} - LOGO - {/if} + + + +
+
+ {#if data.network.tokenmeta && data.network.tokenmeta.length} + LOGO + {/if} +
+ +

Total {data.account.balance?.total.symbol.name || ''} Balance

+ +
- -

Total {data.account.balance?.total.symbol.name || ''} Balance

-

{data.account.balance?.total.value || 0}

-
-
- + - -
-
- $ + +
+
+ $ +
+ +

Total {data.account.value?.total.symbol.name || ''} Balance

+ +
- -

Total {data.account.value?.total.symbol.name || ''} Balance

-

- {data.account.value?.total.value || 0} - - {#if data.network?.tokenprice && data.network.chain.systemToken} - - (${data.network.tokenprice.value}/{data.network.chain.systemToken.symbol.name}) - - {/if} -

-
-
- - + + - {#if data.account.balance} - - - - - - - - - - {#snippet row(name: string, asset: Asset, usdValue?: Asset)} + {#if data.account.balance} +
TokenAmountValue
+ - - - + + + - {/snippet} - {#if data.account.balance.liquid} - {@render row('Available', data.account.balance.liquid, data.account.value?.liquid)} - {/if} - {#if data.account.balance.ram} - {@render row('Ram', data.account.balance.ram, data.account.value?.ram)} - {/if} - {#if data.account.balance.delegated} - {@render row('Staked', data.account.balance.delegated, data.account.value?.delegated)} - {/if} - {#if data.account.balance.staked} - {@render row('REX', data.account.balance.staked, data.account.value?.staked)} - {/if} - -
- {name} - - {asset.value.toFixed(asset.symbol.precision)} - {asset.symbol.name} - - {#if usdValue && usdValue.value} - {usdValue.value.toFixed(usdValue.symbol.precision)} {usdValue.symbol.name} - {/if} - TokenAmountValue
- {/if} + + + {#snippet row(name: string, asset: Asset, usdValue?: Asset)} + + + {name} + + + + + + {#if usdValue && usdValue.value} + + {/if} + + + {/snippet} + {#if data.account.balance.liquid} + {@render row('Available', data.account.balance.liquid, data.account.value?.liquid)} + {/if} + {#if data.account.balance.delegated} + {@render row('Staked', data.account.balance.delegated, data.account.value?.delegated)} + {/if} + {#if data.account.balance.staked} + {@render row('REX', data.account.balance.staked, data.account.value?.staked)} + {/if} + + + {/if} + {#if data.network.tokenprice && data.network.chain.systemToken} - +

Token Price

- +

- ${data.network.tokenprice.value}/{data.network.chain.systemToken.symbol.name} + $/{data.network.chain.systemToken.symbol + .name}

{/if} {#if data.network.ramprice} - +

RAM Price

- {data.network.ramprice.eos.value} - {data.network.ramprice.eos.symbol.name}/KB + /KB

{#if data.network.ramprice.usd} -

${data.network.ramprice.usd.value} /KB

+

$/KB

{/if}
@@ -157,8 +147,8 @@ {/snippet} - -

Resources

+ +

Resources

{#if data.account.ram} @@ -174,33 +164,3 @@
{/if} {/if} - -
-
-
-{#if data.account} -
-

Account Value

- {JSON.stringify(data.account.value, null, 2)} -

System Token Balance

- {JSON.stringify(data.account.balance, null, 2)} -

Token Price

- {#if data.account.network} - {JSON.stringify(data.account.network.tokenprice, null, 2)} - {/if} -

RAM Balance

- {JSON.stringify(data.account.ram, null, 2)} - {#if data.account.network} -

RAM Prices

- {JSON.stringify(data.account.network.ramprice, null, 2)} - {/if} -

Balances

- {JSON.stringify(data.account.balances, null, 2)} -
-{/if} - -{#if data.account} -
- {JSON.stringify(data.account.network, null, 2)} - {JSON.stringify(data.account, null, 2)} -{/if} diff --git a/src/routes/[network]/(explorer)/account/[name]/activity/+page.svelte b/src/routes/[network]/(explorer)/account/[name]/activity/+page.svelte index d2e5d1dc7..cddfcf8af 100644 --- a/src/routes/[network]/(explorer)/account/[name]/activity/+page.svelte +++ b/src/routes/[network]/(explorer)/account/[name]/activity/+page.svelte @@ -1,6 +1,4 @@ @@ -11,21 +9,22 @@ Date Action Data - {#each data.activityActions as action} - {String(action.id).substring(0, 7)} + {String(action.id).substring(0, 7)} {action.timestamp.toDate().toLocaleDateString(undefined, { - weekday: 'long', year: 'numeric', - month: 'long', - day: 'numeric' + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric' })} @@ -34,14 +33,6 @@ {JSON.stringify(action.data, null, 2)} - -
- - -
- {/each} diff --git a/src/routes/[network]/(explorer)/account/[name]/balances/+page.svelte b/src/routes/[network]/(explorer)/account/[name]/balances/+page.svelte index 133d7c8e3..95c5edb91 100644 --- a/src/routes/[network]/(explorer)/account/[name]/balances/+page.svelte +++ b/src/routes/[network]/(explorer)/account/[name]/balances/+page.svelte @@ -1,4 +1,6 @@ @@ -24,7 +26,7 @@
- {balance.asset.value.toFixed(balance.asset.symbol.precision)} + {/each}