natus wheel: ASC/MC angles — tooltips, aspect lines, section headers, tooltip polish

- ASC/MC clickable w. DON/DOFF aspect lines (fixed: open w.o. lines; DON/DOFF
  both work; angles ring handled in _toggleAspects; lines origin at R.planetR)
- btn-disabled click-through fix: pointer-events:auto on DON/DOFF; bounding-rect
  workaround removed
- planet tooltip: applying ⇥ left, separating ↦ right; sign shown for angle partners
- sign tooltip: Planets + Cusps section headers; ordinal house + domain; em-dash fallback
- house tooltip: Planets header; Angular/Succedent/Cadent + phase labels; em-dash fallback
- element tooltips: Planets header for Fire/Stone/Air/Water; Stellium/Parade as
  section-header labels; compact single-stellium Tempo; Parade sign : planets format
- tt-ord: no negative margin in .tt-angle-house context

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-04-22 00:58:19 -04:00
parent 5c05bd6552
commit 0b2320e39b
6 changed files with 752 additions and 109 deletions

View File

@@ -20,13 +20,13 @@
<div class="natus-field">
<label for="id_nf_date">Birth date</label>
<input id="id_nf_date" name="date" type="date" required
{% if saved_birth_dt %}value="{{ saved_birth_dt|date:'Y-m-d' }}"{% endif %}>
{% if saved_birth_date %}value="{{ saved_birth_date }}"{% endif %}>
</div>
<div class="natus-field">
<label for="id_nf_time">Birth time</label>
<input id="id_nf_time" name="time" type="time"
value="{% if saved_birth_dt %}{{ saved_birth_dt|time:'H:i' }}{% else %}12:00{% endif %}">
value="{{ saved_birth_time|default:'12:00' }}">
<small>Local time at birth place. Use 12:00 if unknown.</small>
</div>
@@ -121,7 +121,7 @@
const PLACE_DELAY = 400;
const CHART_DELAY = 300;
NatusWheel.preload();
const _preloadReady = NatusWheel.preload();
// ── Status helper ───────────────────────────────────────────────────────
@@ -313,9 +313,18 @@
return m ? m[1] : '';
}
// ── Auto-preview on load if form is pre-filled from saved sky ───────────
// ── Draw saved sky on load; only call PySwiss if no saved chart yet ─────
if (_formReady()) schedulePreview();
const _savedSky = {{ saved_sky_json|safe }};
_preloadReady.then(() => {
if (_savedSky) {
_lastChartData = _savedSky;
confirmBtn.disabled = false;
NatusWheel.draw(svgEl, _savedSky);
} else if (_formReady()) {
schedulePreview();
}
});
})();
</script>
{% endblock %}