natus wheel: unified PRV/NXT cycle merging planets & angles; drop degree from classic element contribs; tt-planet-sym larger; tt-sign-type italic — TDD
- _chartItems merges _planetItems + _angleItems sorted by degree desc; _stepCycle dispatches to _activatePlanet or _activateAngle via unified list - T15g/h/i: angle↔planet boundary navigation & wrap; T9n/T9w updated for merged cycle - classic element contrib rows: removed @ deg° (pdata/inDeg lookup dropped) - .tt-planet-sym 1.2→1.8rem; .tt-house-of/.tt-house-type 0.6em→0.7rem; .tt-sign-type added alongside .tt-house-type selector, font-style: italic Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -159,11 +159,12 @@ const NatusWheel = (() => {
|
||||
|
||||
let _activeRing = null; // 'planets' | 'elements' | 'signs' | 'houses' | 'angles' | null
|
||||
let _activeIdx = null; // index within the active ring's sorted list
|
||||
let _planetItems = []; // [{name, degree}] sorted by ecliptic degree ascending
|
||||
let _planetItems = []; // [{name, degree}] sorted by ecliptic degree descending
|
||||
let _elementItems = []; // [{key}] in ELEMENT_ORDER
|
||||
let _signItems = []; // [{name, symbol, element}] in SIGNS order
|
||||
let _houseItems = []; // [{num, label}] houses 1–12
|
||||
let _angleItems = []; // [{name, label, house}] — ASC and MC
|
||||
let _angleItems = []; // [{name, deg}] — ASC and MC
|
||||
let _chartItems = []; // [{type, name, deg}] planets+angles merged, degree desc
|
||||
|
||||
// Tooltip DOM refs — set by _injectTooltipControls() on each draw().
|
||||
let _tooltipEl = null;
|
||||
@@ -321,6 +322,10 @@ const NatusWheel = (() => {
|
||||
{ name: 'ASC', deg: data.houses.asc },
|
||||
{ name: 'MC', deg: data.houses.mc },
|
||||
];
|
||||
_chartItems = [
|
||||
..._planetItems.map(p => ({ type: 'planet', name: p.name, deg: p.degree })),
|
||||
..._angleItems.map(a => ({ type: 'angle', name: a.name, deg: a.deg })),
|
||||
].sort((a, b) => b.deg - a.deg);
|
||||
}
|
||||
|
||||
/** Clear all active-lock classes and reset cycle state. */
|
||||
@@ -640,9 +645,7 @@ const NatusWheel = (() => {
|
||||
if (contribs.length) {
|
||||
bodyHtml += '<div class="tt-el-contribs">';
|
||||
contribs.forEach(c => {
|
||||
const pdata = (_currentData.planets || {})[c.planet] || {};
|
||||
const inDeg = pdata.degree !== undefined ? _inSignDeg(pdata.degree).toFixed(1) : '?';
|
||||
bodyHtml += `<div class="tt-asp-row">${_pSym(c.planet)} @ ${inDeg}° ${_signIcon(c.sign)} +1</div>`;
|
||||
bodyHtml += `<div class="tt-asp-row">${_pSym(c.planet)} <span class="tt-dim">in</span> ${_signIcon(c.sign)} +1</div>`;
|
||||
});
|
||||
bodyHtml += '</div>';
|
||||
} else {
|
||||
@@ -666,7 +669,7 @@ const NatusWheel = (() => {
|
||||
});
|
||||
} else {
|
||||
const psyms = st.planets.map(p => _pSym(p.planet)).join(' ');
|
||||
bodyHtml += `<div class="tt-asp-row tt-el-planet-row">${_signIcon(st.sign)} : ${psyms}</div>`;
|
||||
bodyHtml += `<div class="tt-asp-row tt-el-planet-row"><span class="tt-dim">in</span> ${_signIcon(st.sign)} : ${psyms}</div>`;
|
||||
}
|
||||
});
|
||||
bodyHtml += '</div>';
|
||||
@@ -697,7 +700,7 @@ const NatusWheel = (() => {
|
||||
pd.signs.forEach(sign => {
|
||||
const planets = bySign[sign] || [];
|
||||
const psyms = planets.map(p => _pSym(p.planet)).join(' ');
|
||||
bodyHtml += `<div class="tt-asp-row tt-el-planet-row">${_signIcon(sign)} : ${psyms}</div>`;
|
||||
bodyHtml += `<div class="tt-asp-row tt-el-planet-row"><span class="tt-dim">in</span> ${_signIcon(sign)} : ${psyms}</div>`;
|
||||
});
|
||||
});
|
||||
bodyHtml += '</div>';
|
||||
@@ -771,7 +774,7 @@ const NatusWheel = (() => {
|
||||
`<span class="tt-sign-icon-wrap tt-sign-icon-wrap--${elKey}">${iconSvg}</span>` +
|
||||
`</div>` +
|
||||
`<div class="tt-sign-meta">` +
|
||||
`<span>${modality} ${sign.element}</span>` +
|
||||
`<span class="tt-sign-type">${modality} ${sign.element}</span>` +
|
||||
vecImg +
|
||||
`</div>` +
|
||||
`<div class="tt-sign-section-header">Planets</div>` +
|
||||
@@ -831,9 +834,18 @@ const NatusWheel = (() => {
|
||||
|
||||
/** Advance the active ring by +1 (NXT) or -1 (PRV). */
|
||||
function _stepCycle(dir) {
|
||||
if (_activeRing === 'planets') {
|
||||
_activeIdx = (_activeIdx + dir + _planetItems.length) % _planetItems.length;
|
||||
_activatePlanet(_activeIdx);
|
||||
if (_activeRing === 'planets' || _activeRing === 'angles') {
|
||||
const currentName = _activeRing === 'planets'
|
||||
? _planetItems[_activeIdx].name
|
||||
: _activeIdx; // angles use name string as _activeIdx
|
||||
const pos = _chartItems.findIndex(c => c.name === currentName);
|
||||
if (pos === -1) return;
|
||||
const next = _chartItems[(pos + dir + _chartItems.length) % _chartItems.length];
|
||||
if (next.type === 'planet') {
|
||||
_activatePlanet(_planetItems.findIndex(p => p.name === next.name));
|
||||
} else {
|
||||
_activateAngle(next.name);
|
||||
}
|
||||
} else if (_activeRing === 'elements') {
|
||||
_activeIdx = (_activeIdx + dir + _elementItems.length) % _elementItems.length;
|
||||
_activateElement(_activeIdx);
|
||||
|
||||
Reference in New Issue
Block a user