گروه شاخص‌ها (MetricGroup)

یک ردیف شاخص با قاعدهٔ واحد برای دادهٔ ناموجود؛ نامعلوم «—»، نامربوط پنهان، هرگز صفر ساختگی

معرفی

MetricGroup شاخص‌های یک پست، حساب یا نظر را نمایش می‌دهد و برای دادهٔ ناموجود یک قاعده دارد:

مقدارنمایش
عدد (از جمله 0)عدد فشرده؛ مقدار دقیق در راهنمای شناور
null (نامعلوم)«—» کم‌رنگ، با نام «نامعلوم» برای صفحه‌خوان
undefined (نامربوط)هیچ‌چیز

تعداد به‌شکل فشرده نمایش داده می‌شود (12.4 هزار، با ارقام لاتین که قلم آن‌ها را فارسی نمایش می‌دهد و بدون K/M لاتین) و نسبت‌ها که همیشه کسرند (0.034، یا 1.8 برای نرخ 180 درصد)، درصد (3.4٪). بازدید و پخش ویدئو دو نشانهٔ متفاوت دارند.

چه زمانی استفاده کنیم:

  • ردیف شاخص زیر پست یا کنار ردیف فهرست (layout="inline").
  • آمار سرِ صفحهٔ حساب یا نوار خلاصه (layout="stacked").

چه زمانی استفاده نکنیم:

  • برای کارت KPI داشبورد: از MetricCard استفاده کنید.
  • برای جدول: عدد را در سلول جدول با همان قاعدهٔ «—» بنویسید.

جزء پایه، نه کارت پست

این جزء یکی از اجزای پایهٔ @partodata/ui/social است که Post، Comment و Account روی آن‌ها ساخته شده‌اند. پست، نظر یا حساب را با همان کامپوننت‌ها نمایش دهید و فهرست آن‌ها را با EntityCollection؛ کارت یا ردیف را خودتان از اجزای پایه نسازید. جدول انتخاب در مدل محتوای اجتماعی است.

inline — likes 12400 · comments 0 · views null (unknown) · plays absent (not applicable)
  • لایک12,400
  • نظر0
  • بازدیدنامعلوم
  • نرخ تعامل3.4٪
stacked — account
  • 1,466,000دنبال‌کننده
  • 312دنبال‌شده
  • نامعلومپست
  • 5.1٪نرخ تعامل
en · a rate below 0.005% · a product metric
  • Likes3,200
  • Engagement<0.01%
  • Collected comments:120

استفاده

رکورد مدل را مستقیم بدهید: metrics (مثلاً post.metrics) و source. برچسب، نشانه و قالب هر شاخص از جدول سیستم طراحی می‌آید و به منبع توجه می‌کند («تماشا» در تیک‌تاک، «عضو» برای کانال تلگرام)؛ زبان فقط یک بار، در locale خود جزء، داده می‌شود. همهٔ ورودی‌ها دادهٔ ساده‌اند، پس کامپوننت سرور هم می‌تواند آن را رندر کند.

import { MetricGroup, type SocialPost } from '@partodata/ui/social'

export function PostStats({ post }: { post: SocialPost }) {
  return <MetricGroup metrics={post.metrics} source={post.source} />
}

بدون keys هر شاخصی که رکورد دارد، به ترتیب سیستم طراحی نمایش داده می‌شود (دنبال‌کننده، دنبال‌شده، پست؛ پسند، نظر، پاسخ، اشتراک، بازنشر، نقل‌قول، ذخیره، بازدید، پخش، دسترسی، مخاطب؛ نرخ تعامل؛ رتبه). رکورد تعیین می‌کند چه چیزی مربوط است: کلید حذف‌شده نمایش داده نمی‌شود و null «—» است. keys فقط وقتی لازم است که بخواهید زیرمجموعه یا ترتیب دیگری نشان دهید؛ فقط کلیدهایی پذیرفته می‌شوند که نوع رکورد دارد (ردیف پست نمی‌تواند followers بخواهد).

<MetricGroup metrics={post.metrics} source={post.source} keys={['likes', 'comments', 'views']} />

نام شاخص بیرون از MetricGroup

برای سرستون جدول، برچسب فیلتر یا ستون فایل خروجی، نام شاخص را از metricLabel بگیرید. MetricGroup هم برچسب‌هایش را از همین تابع می‌گیرد، پس یک شاخص دو نام متفاوت پیدا نمی‌کند. این تابع را از @partodata/ui/social/adapters بگیرید، نه از @partodata/ui/social: آن مسیر نشانهٔ 'use client' دارد و کامپوننت سرور نمی‌تواند تابعی از آن را فراخوانی کند؛ @partodata/ui/social/adapters در کامپوننت سرور و کلاینت هر دو کار می‌کند.

import { metricLabel, type SocialPost } from '@partodata/ui/social/adapters'

export function ViewsHeader({ post }: { post: SocialPost }) {
  return <th scope="col">{metricLabel('views', 'fa', post.source)}</th>
}

metricLabel(key, locale = 'fa', source?) یک رشته برمی‌گرداند. key یکی از کلیدهای SocialMetricKey است، locale زبان نام، و source (post.source یا یک کلید) نام وابسته به پلتفرم را انتخاب می‌کند: metricLabel('views', 'fa', 'tiktok') «تماشا» و metricLabel('followers', 'fa', { key: 'telegram' }) «عضو» است.

حالت‌ها و انواع

  • layout="inline" (پیش‌فرض): یک خط نشانه و عدد؛ نام شاخص و عدد دقیق برای صفحه‌خوان، عدد دقیق در راهنمای شناور.
  • layout="stacked": عدد بالای نام شاخص، برای سرِ صفحهٔ حساب.
  • شاخصی که محصول خودش تعریف کرده (مثلاً «نظر جمع‌آوری‌شده») را در items بدهید؛ بعد از شاخص‌های سیستم طراحی می‌آید. icon نشانهٔ یکی از شاخص‌های سیستم طراحی با کلیدش ('views') یا یک عنصر نشانه است؛ بدون نشانه، نامش دیده می‌شود.
  • نسبتی که صفر نیست ولی از 0.005٪ کمتر است «<0.01٪» نمایش داده می‌شود، نه «0٪».

راهنمای استفاده

بکنید

  • برای مقدار نامعلوم null بگذارید و برای شاخصی که به این مورد مربوط نیست کلید را ننویسید.
  • نسبت را کسر بدهید، نه درصد؛ واحد در مبدل تبدیل می‌شود.

نکنید

  • مقدار نامعلوم را صفر نکنید؛ «0 بازدید» روی پست عکس دادهٔ ساختگی است.
  • برچسب شاخص‌های سیستم طراحی را خودتان در items ننویسید؛ metrics و source را بدهید.
  • نام شاخص را برای سرستون یا فیلتر دستی ننویسید؛ metricLabel را از @partodata/ui/social/adapters بگیرید.
  • آمار حساب (دنبال‌کننده، رتبه) را در ردیف شاخص هر پست تکرار نکنید.
  • ارقام را خودتان در جاوااسکریپت فارسی نکنید؛ قلم این کار را می‌کند و رونوشت و جست‌وجو سالم می‌مانند.

Props

Prop

Type

MetricGroupItem

Prop

Type

دسترسی‌پذیری

  • فهرست یک ul با role="list" صریح است (فهرست flex بدون بولت در WebKit نقشش را از دست می‌دهد) و هر شاخص یک li.
  • صفحه‌خوان نام شاخص و عدد دقیق را یک بار می‌خواند؛ عدد فشرده فقط دیدنی است و با بردن نشانگر روی آن، عدد دقیق را در راهنمای شناور نشان می‌دهد. آیتم title ندارد تا نامش دوبار خوانده نشود.
  • «—» پنهان است و به‌جایش «نامعلوم» خوانده می‌شود.
  • ارقام در DOM لاتین‌اند؛ در en ویژگی ارقام فارسی قلم خاموش می‌شود و در ar ارقام عربی نوشته می‌شوند.

کامپوننت‌های مرتبط