# صور مخططات SVG

`/v1/render/*` يُرجع خريطة كملف SVG جاهز: عجلة الميلاد، العجلة الثنائية والثلاثية، المركبة، الخرائط الفيدية (الشمالية، الجنوبية، الشرقية)، شبكة الجوانب، الكوزموغرام، طور القمر، الخط الزمني، الإيقاعات الحيوية، شريط الكسوف، وخريطة النجوم. أنت ترسل بيانات الميلاد، ونحن نحسب الخريطة ونرسمها. القائمة الكاملة للمسارات والمعاملات موجودة في [مرجع API](/docs/api/).

تم نشر نفس كود الرسم كحزمة npm [`@astroway/render`](https://www.npmjs.com/package/@astroway/render): إذا كانت بيانات الخريطة لديك بالفعل، فيمكنك رسم العجلة في المتصفح أو على خادمك، وستتطابق تمامًا مع ما يُرجعه API، بايتًا ببايت. يُرجع API إصدار الرسم في ترويسة `X-Render-Version`.

## الطلب

```bash
curl -X POST https://api.astroway.info/v1/render/wheel-western \
  -H "X-Api-Key: $ASTROWAY_KEY" -H "Content-Type: application/json" \
  -d '{"date":"1990-05-15","time":"14:30:00","timezoneOffset":3,"latitude":50.45,"longitude":30.52,
       "options":{"theme":"css","format":"svg"}}' > wheel.svg
```

`format: "svg"` يُرجع الملف نفسه، بينما `json` الافتراضي يغلف سلسلة SVG في استجابة API عادية. السمات: `light`, `dark`, `console` و `css`.

## سمة css: ألوان موقعك

مع `theme: "css"`، يتم تسجيل كل لون في SVG كمتغير CSS مع لون السمة الفاتحة كاحتياطي، على سبيل المثال `var(--aw-ring, #222)`. أدخل SVG في HTML الصفحة (وليس في `<img>`: المتغيرات لا تعمل هناك) وحدد المتغيرات:

```css
.chart {
  --aw-chart-bg: transparent;
  --aw-ring: #444;
  --aw-fg: currentColor;
  --aw-aspect-tense: crimson;
}
```

بدون أي متغير، تبدو الخريطة تمامًا مثل `light`. قاعدة CSS لصفحتك أقوى من المتغير، لذا يمكن إعادة تلوين عنصر فردي باستخدام فئة.

| المتغير | ما يلوّنه |
|---|---|
| `--aw-chart-bg` | خلفية الخريطة |
| `--aw-fg`, `--aw-muted` | الرموز والتسميات، النص الثانوي والتقسيمات |
| `--aw-ring` | الدوائر وخطوط الشبكة |
| `--aw-houses-fill` | حقل الخريطة الفيدية، قرص خريطة النجوم، خريطة الكسوف |
| `--aw-benefic` | كواكب الدائرة الخارجية، اللاغنا في الخريطة الفيدية، أحداث الخط الزمني بدون لون خاص بها |
| `--aw-malefic` | علامة التراجع ℞، شريط الكسوف |
| `--aw-aspect-harmonious`, `--aw-aspect-tense`, `--aw-aspect-neutral`, `--aw-aspect-minor`, `--aw-aspect-quintile` | خطوط ورموز الجوانب |
| `--aw-moon-shadow`, `--aw-moon-light` | طور القمر |
| `--aw-cycle-physical`, `--aw-cycle-emotional`, `--aw-cycle-intellectual` | الإيقاعات الحيوية |

## الفئات وسمات البيانات

في سمة `css`، تحتوي العجلات الغربية (`wheel-western`, `bi-wheel`, `tri-wheel`, `composite`) وشبكة الجوانب على فئات ثابتة. يتم إضافة الأسماء فقط، ولا يتم إعادة تسميتها أبدًا، لذا يمكنك كتابة الأنماط والسكريبتات عليها.

- العجلة: `aw-bg`, `aw-ring`, `aw-sign aw-sign-leo`, `aw-sign-line`, `aw-tick`, `aw-house-cusp`, `aw-house-number`, المحاور `aw-axis aw-asc` (`aw-dsc`, `aw-mc`, `aw-ic`), تسمياتها `aw-label aw-axis-label`, العنوان `aw-title`.
- الكوكب: المجموعة `<g class="aw-planet aw-planet-sun">`, الكوكب المتراجع لديه أيضًا `aw-retrograde`, كواكب الدائرة الخارجية `aw-layer-1`. في الداخل `aw-glyph`, `aw-retro` (علامة ℞) و `aw-planet-tick`.
- الجانب: الخط `aw-aspect aw-aspect-trine`, الخط بين خريطتين أيضًا `aw-cross-aspect`.
- شبكة الجوانب: `aw-grid-header`, `aw-grid-cell`, `aw-aspect aw-aspect-square`, `aw-orb`.

تحتوي مجموعة الكوكب على `data-planet` (`sun`, `north-node`, `lilith`؛ على الدائرة الخارجية `b-sun`، وعلى الثالثة `c-sun`) و `data-label` مع الاسم والموقع: `Mercury 8°00' Taurus, retrograde`. يحتوي خط الجانب وخلية الشبكة على `data-a` و `data-b`. هكذا يتم تمييز جميع جوانب الكوكب عند التمرير:

```js
svg.querySelectorAll('.aw-planet').forEach((g) => g.addEventListener('mouseenter', () => {
  const id = g.dataset.planet;
  svg.querySelectorAll('.aw-aspect').forEach((line) =>
    line.classList.toggle('is-on', line.dataset.a === id || line.dataset.b === id));
}));
```

## تسمياتك الخاصة: labels

تقبل العجلات الغربية `options.labels`: كلماتك لتسميات المحاور، لـ `<title>` و `<desc>` التي يقرأها قارئات الشاشة، وللأسماء في `data-label`. المفاتيح غير الموجودة تبقى بالإنجليزية؛ نحن لا نترجم أي شيء بأنفسنا.

```json
"options": {
  "theme": "css",
  "labels": {
    "asc": "Асц", "mc": "МС", "title": "Натальна карта",
    "bodies": { "Sun": "Сонце", "Moon": "Місяць" },
    "signs": ["Овен","Телець","Близнюки","Рак","Лев","Діва","Терези","Скорпіон","Стрілець","Козеріг","Водолій","Риби"],
    "retrograde": "ретроградний"
  }
}
```

تحتوي `bodies` على مفاتيح بالإنجليزية (`Sun`, `North Node`)، و `signs` هي اثنا عشر اسمًا بالضبط، بدءًا من برج الحمل، كل تسمية تصل إلى 40 حرفًا.

## الجوانب بين خريطتين

`/v1/render/bi-wheel` مع `options.crossAspects: true` يرسم بخط متقطع الجوانب بين الخريطة الداخلية والخارجية، وهي نفس المجموعة التي يُرجعها `POST /v1/synastry` كـ `crossAspects`. يتم تخطي الزوج الذي لم يتم رسم أحد أجسامه. يتم تعطيله افتراضيًا.

## خريطة جاهزة بدلاً من بيانات الميلاد

إذا كانت الخريطة لديك بالفعل، لأنك قمت باستدعاء `POST /v1/chart` للتو، فأرسل `data` الخاصة بها في حقل `chart` بدلاً من بيانات الميلاد، وسنقوم برسمها فقط. هكذا تعمل `wheel-western`, `aspect-grid` و `bi-wheel` (حيث `natal.chart` و `outer.chart`، وكلاهما يجب أن يكونا خريطتين جاهزتين). ستكون الصورة مطابقة تمامًا، بايتًا ببايت، لتلك التي يتم إنشاؤها من بيانات الميلاد.

```json
{ "chart": { "planets": [ ... ], "houses": { "cusps": [ ... ], "ascendant": 7.77, "mc": 277.12 }, "aspects": [ ... ] },
  "options": { "theme": "css" } }
```

يمكن عدم قص الحقول الزائدة في الاستجابة. يتم التحقق مما يتم رسمه: من 1 إلى 30 جسمًا، خطوط طول من 0 إلى 360، و 12 قمة بالضبط. يتم رفض الجسم الذي يحتوي على كل من `chart` وبيانات الميلاد برمز 400.

## التكلفة

يكلف استدعاء `/v1/render/*` ببيانات الميلاد 10 أرصدة، لأن الخريطة يتم حسابها. مع خريطة `chart` الجاهزة، تكلف استدعاءات `/v1/render/wheel-western`, `/v1/render/aspect-grid` و `/v1/render/bi-wheel` رصيدًا واحدًا. السمة والفئات والتسميات لا تؤثر على السعر.
