feat: human readable numbers for counts

This commit is contained in:
Daniel Roe 2022-11-25 21:57:40 +00:00
parent 64e052d317
commit 94cd7c72f6
No known key found for this signature in database
GPG key ID: 22D5008E4F5D9B55
3 changed files with 21 additions and 6 deletions

View file

@ -95,13 +95,13 @@ function previewAvatar() {
</div>
<div flex gap-5>
<NuxtLink :to="`/${getFullHandle(account)}/`" exact-active-class="text-primary">
<span font-bold>{{ account.statusesCount }}</span> <span op50>Posts</span>
<span font-bold>{{ formattedNumber(account.statusesCount) }}</span> <span op50>Posts</span>
</NuxtLink>
<NuxtLink :to="`/${getFullHandle(account)}/following`" exact-active-class="text-primary">
<span font-bold>{{ account.followingCount }}</span> <span op50>Following</span>
<span font-bold>{{ humanReadableNumber(account.followingCount) }}</span> <span op50>Following</span>
</NuxtLink>
<NuxtLink :to="`/${getFullHandle(account)}/followers`" exact-active-class="text-primary">
<span font-bold>{{ account.followersCount }}</span> <span op50>Followers</span>
<span font-bold>{{ humanReadableNumber(account.followersCount) }}</span> <span op50>Followers</span>
</NuxtLink>
</div>
</div>

View file

@ -11,15 +11,15 @@ defineProps<{
<AccountInfo :account="account" />
<div text-sm flex flex-row text-gray mt-4>
<NuxtLink :to="`/${getShortHandle(account)}/`">
{{ account.statusesCount }} Posts
{{ formattedNumber(account.statusesCount) }} Posts
</NuxtLink>
<span flex-1 text-center> </span>
<NuxtLink :to="`/${getShortHandle(account)}/following`">
{{ account.followingCount }} Following
{{ humanReadableNumber(account.followingCount) }} Following
</NuxtLink>
<span flex-1 text-center> </span>
<NuxtLink :to="`/${getShortHandle(account)}/followers`">
{{ account.followersCount }} Followers
{{ humanReadableNumber(account.followersCount) }} Followers
</NuxtLink>
</div>
<ContentRich text-4 text-gray :content="account.note" :emojis="account.emojis" />

15
composables/numbers.ts Normal file
View file

@ -0,0 +1,15 @@
const formatter = Intl.NumberFormat()
export const humanReadableNumber = (num: number) => {
if (num < 10000)
return formatter.format(num)
if (num < 1000000)
return `${Math.floor(num / 1000)}K`
return `${Math.floor(num / 1000000)}M`
}
export const formattedNumber = (num: number) => {
return formatter.format(num)
}