Skip to content

Radar

نمودار راداری برای سنجش چند شاخص از یک مجموعه‌داده روی بومی دوبعدی.

کجا به کارش ببرید: وقتی به نمودار راداری نیاز دارید تا چند شاخص از یک مجموعه‌داده را با هم بسنجید. آرایه‌ای JSON از نام محورها و امتیازها را از راه ویژگی abilitys به <r-radar> بدهید.

شروع سریع

استفادهٔ پایه

داده از راه ویژگی abilitys و به‌شکل رشتهٔ JSON (آرایه‌ای از شیءها) داده می‌شود. چون ویژگی‌های HTML تنها رشته نگه می‌دارند، مقدار باید JSON معتبر باشد؛ درون کامپوننت با JSON.parse تجزیه می‌شود. میزبان <r-radar> اندازهٔ ذاتی ندارد، پس عرض و ارتفاع صریح به آن بدهید.

html
<r-radar
  style="width:300px;height:300px;display:block;"
  abilitys='[{"abilityName":"جان","scoreRate":"10"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

می‌توانید داده را دستوری هم از راه خصیصهٔ JS به نام abilitys تعیین کنید؛ این خصیصه هم آرایه می‌پذیرد (که دوباره به‌شکل رشته روی ویژگی نوشته می‌شود) و هم رشتهٔ JSON:

js
const radar = document.createElement('r-radar');
radar.abilitys = [
  { abilityName: 'جان', scoreRate: 10 },
  { abilityName: 'حمله', scoreRate: 90 },
  { abilityName: 'دفاع', scoreRate: 20 },
];
chart.append(radar);

مرجع API

خصیصه‌ها

خصیصهنوعپیش‌فرضتوضیح
abilitysstring / Array''دادهٔ نمودار به‌شکل رشتهٔ JSON (یا آرایه از راه خصیصهٔ JS)
colorPolygonstringvar(--ran-radar-polygon-color) / #e6e6e6رنگ چندضلعی‌های هم‌مرکز شبکه
colorLinestringvar(--ran-radar-line-color) / #e6e6e6رنگ خطوط محور و لبهٔ بیرونی
fillColorstringrgba(255,121,35,0.60)رنگ پرشدگی ناحیهٔ داده
strokeColorstringrgba(255,121,35,0.60)رنگ خط پیرامون ناحیه و نقطه‌های رأس
sheetstring''CSS تزریق‌شده به shadow DOM کامپوننت

هر مدخل آرایهٔ abilitys این کلیدها را می‌پذیرد:

کلیدنوعالزامیتوضیح
abilityNamestringبلهمتن برچسب محور
scoreRatenumberبلهمقدار روی آن محور؛ سقف شبکه 100 است
backgroundColorstringخیررنگ زمینهٔ برچسب (پیش‌فرض شفاف)
fontSizenumberخیراندازهٔ قلم برچسب (پیش‌فرض متناسب با نمودار)
fontColorstringخیررنگ متن برچسب (پیش‌فرض --ran-color-text)
fontFamilystringخیرخانوادهٔ قلم برچسب (پیش‌فرض SimHei)

یادداشت: colorPolygon، colorLine، fillColor و strokeColor بدون حساسیت به بزرگی و کوچکی حروف خوانده می‌شوند، پس چه ویژگی از ابتدا باشد و چه پس از mount عوض شود، درست ترسیم می‌شوند؛ به‌روزرسانی هرکدام نمودار را دوباره می‌کشد. برای استایلی که از پوسته پیروی کند، متغیرهای CSS پایین‌تر را ترجیح دهید.

دادهٔ نمودار abilitys

استایل برچسب هر محور (backgroundColor، fontSize، fontColor) را می‌توان روی مدخل‌های جداگانه تعیین کرد:

html
<r-radar
  style="width:300px;height:300px;display:block;"
  abilitys='[{"abilityName":"جان","scoreRate":"10","backgroundColor":"red","fontSize":"30","fontColor":"blue"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

رنگ چندضلعی شبکه colorPolygon

html
<r-radar
  style="width:300px;height:300px;display:block;"
  colorPolygon="green"
  abilitys='[{"abilityName":"جان","scoreRate":"10"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

رنگ خط محور colorLine

html
<r-radar
  style="width:300px;height:300px;display:block;"
  colorLine="blue"
  abilitys='[{"abilityName":"جان","scoreRate":"10"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

رنگ پرشدگی ناحیه fillColor

html
<r-radar
  style="width:300px;height:300px;display:block;"
  fillColor="red"
  abilitys='[{"abilityName":"جان","scoreRate":"10"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

رنگ خط پیرامون ناحیه strokeColor

html
<r-radar
  style="width:300px;height:300px;display:block;"
  strokeColor="blue"
  abilitys='[{"abilityName":"جان","scoreRate":"10"},{"abilityName":"حمله","scoreRate":"90"},{"abilityName":"دفاع","scoreRate":"20"},{"abilityName":"تسلط عنصری","scoreRate":"50"},{"abilityName":"شانس ضربهٔ بحرانی","scoreRate":"80"},{"abilityName":"آسیب بحرانی","scoreRate":"50"}]'
></r-radar>

دادهٔ نمونهٔ کامل

چون attribute در HTML تنها می‌تواند string حمل کند، داده‌ای که می‌دهید باید رشتهٔ json باشد که با JSON.parse دوباره به آرایه‌ای از شیءها تبدیل می‌شود؛ JSON بدشکل تجزیه نمی‌شود:

json
[
  {
    "abilityName": "جان",
    "scoreRate": "10",
    "backgroundColor": "red",
    "fontSize": "30",
    "fontColor": "blue"
  },
  {
    "abilityName": "حمله",
    "scoreRate": "90"
  },
  {
    "abilityName": "دفاع",
    "scoreRate": "20"
  },
  {
    "abilityName": "تسلط عنصری",
    "scoreRate": "50"
  },
  {
    "abilityName": "شانس ضربهٔ بحرانی",
    "scoreRate": "80"
  },
  {
    "abilityName": "آسیب بحرانی",
    "scoreRate": "50"
  }
]

متغیرهای CSS

رنگ‌های نمودار را می‌توان (به‌شکل واکنشی نسبت به پوسته) با ویژگی‌های سفارشی CSS روی میزبان هم تعیین کرد:

متغیرپیش‌فرضتوضیح
--ran-radar-polygon-colorvar(--ran-color-border) / #e6e6e6رنگ چندضلعی شبکه
--ran-radar-line-colorvar(--ran-color-border) / #e6e6e6رنگ خط محور
--ran-radar-fill-colorrgba(255,121,35,0.60)رنگ پرشدگی ناحیهٔ داده
--ran-radar-stroke-colorrgba(255,121,35,0.60)رنگ خط پیرامون ناحیهٔ داده
--ran-radar-width100%عرض نگه‌دارندهٔ بوم
--ran-radar-height100%ارتفاع نگه‌دارندهٔ بوم
--ran-radar-displayblockdisplay نگه‌دارندهٔ بوم
--ran-radar-positionrelativeposition نگه‌دارندهٔ بوم

رنگ متن برچسب‌ها هم به توکن پوستهٔ --ran-color-text برمی‌گردد، پس برچسب‌ها در حالت روشن و تیره خوانا می‌مانند.

رویدادها

ندارد. <r-radar> هیچ رویداد سفارشی‌ای ارسال نمی‌کند.

بهترین شیوه‌ها

  • اندازه‌گذاری: میزبان اندازهٔ ذاتی ندارد؛ همیشه width/height صریح بدهید (با style یا با متغیرهای --ran-radar-width/--ran-radar-height). نمودار با ResizeObserver تغییر اندازهٔ نگه‌دارنده را می‌فهمد و خودش دوباره کشیده می‌شود.
  • قالب داده: در abilitys فقط JSON معتبر بدهید؛ JSON بدشکل ثبت می‌شود و تجزیه‌شدنی نیست. وقتی در کد با آرایه‌های واقعی کار می‌کنید از خصیصهٔ JS به نام abilitys استفاده کنید.
  • مقیاس: scoreRate نسبت به بیشینهٔ ثابت 100 سنجیده می‌شود؛ مقدارهایتان را به همان بازه ببرید.
  • پوسته‌دهی: ویژگی‌های رنگ (colorPolygon، colorLine، fillColor، strokeColor) واکنشی‌اند و اگر پس از mount عوض شوند نمودار را دوباره می‌کشند. اگر می‌خواهید رنگ‌ها خودبه‌خود از پوستهٔ روشن/تیره پیروی کنند، متغیرهای --ran-radar-* را ترجیح دهید.

منتشرشده تحت مجوز MIT.