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:
@@ -535,7 +535,7 @@ body[class*="-light"] {
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
.tt-planet-sym {
|
||||
font-size: 1.2rem;
|
||||
font-size: 1.8rem;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.tt-angle-sym {
|
||||
@@ -608,7 +608,7 @@ body[class*="-light"] {
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
.tt-house-of {
|
||||
font-size: 0.6em;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
margin-right: 0.15em;
|
||||
opacity: 0.9;
|
||||
@@ -619,12 +619,14 @@ body[class*="-light"] {
|
||||
opacity: 1;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.tt-house-type {
|
||||
.tt-house-type,
|
||||
.tt-sign-type {
|
||||
display: block;
|
||||
font-size: 0.6em;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 400;
|
||||
opacity: 0.7;
|
||||
margin-top: 0.1em;
|
||||
font-style: italic;
|
||||
}
|
||||
.tt-house-planets {
|
||||
display: flex;
|
||||
|
||||
@@ -232,8 +232,10 @@ describe("NatusWheel — tick lines, raise, and cycle navigation", () => {
|
||||
});
|
||||
|
||||
// ── T9n ── PRV cycles counterclockwise (to higher ecliptic degree) ────────
|
||||
// CONJUNCTION_CHART merged sorted desc: ASC(180)→Mars(132)→MC(90)→Sun(66.7)→Venus(63.3)
|
||||
// PRV from Sun (pos 3) → MC (pos 2, 90°) — angles and planets share the cycle.
|
||||
|
||||
it("T9n: clicking PRV from Sun shows Mars (previous planet counterclockwise = higher degree)", () => {
|
||||
it("T9n: clicking PRV from Sun shows MC (next higher ecliptic degree in merged cycle)", () => {
|
||||
const sun = svgEl2.querySelector("[data-planet='Sun']");
|
||||
expect(sun).not.toBeNull("expected [data-planet='Sun']");
|
||||
|
||||
@@ -242,24 +244,25 @@ describe("NatusWheel — tick lines, raise, and cycle navigation", () => {
|
||||
const prvBtn = tooltipEl.querySelector(".nw-tt-prv");
|
||||
prvBtn.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
expect(tooltipEl.textContent).toContain("Mars");
|
||||
const mars = svgEl2.querySelector("[data-planet='Mars']");
|
||||
expect(mars.classList.contains("nw-planet--active")).toBe(true);
|
||||
expect(tooltipEl.textContent).toContain("Midheaven");
|
||||
const mc = svgEl2.querySelector("[data-angle='MC']");
|
||||
expect(mc.classList.contains("nw-angle--active")).toBe(true);
|
||||
expect(sun.classList.contains("nw-planet--active")).toBe(false);
|
||||
});
|
||||
|
||||
// ── T9w ── NXT wraps clockwise from the last (lowest-degree) planet ───────
|
||||
// ── T9w ── NXT wraps clockwise from the lowest-degree item ───────────────
|
||||
// Venus(63.3°) is lowest; NXT wraps to ASC(180°) — the highest-degree item.
|
||||
|
||||
it("T9w: cycling NXT from Venus (lowest degree) wraps clockwise to Mars (highest degree)", () => {
|
||||
// Venus is idx 2 (lowest degree = furthest clockwise); NXT wraps to idx 0 = Mars
|
||||
it("T9w: cycling NXT from Venus (lowest degree) wraps clockwise to ASC (highest degree)", () => {
|
||||
const venus = svgEl2.querySelector("[data-planet='Venus']");
|
||||
venus.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
const nxtBtn = tooltipEl.querySelector(".nw-tt-nxt");
|
||||
nxtBtn.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
expect(tooltipEl.textContent).toContain("Mars");
|
||||
const mars = svgEl2.querySelector("[data-planet='Mars']");
|
||||
expect(mars.classList.contains("nw-planet--active")).toBe(true);
|
||||
expect(tooltipEl.textContent).toContain("Ascendant");
|
||||
const asc = svgEl2.querySelector("[data-angle='ASC']");
|
||||
expect(asc.classList.contains("nw-angle--active")).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -952,4 +955,47 @@ describe("NatusWheel — angle (ASC/MC) click tooltips", () => {
|
||||
const bodyHtml = tooltipEl.querySelector(".nw-tt-body").innerHTML;
|
||||
expect(bodyHtml).toContain("ASC");
|
||||
});
|
||||
|
||||
// T15g — NXT from a planet steps into an angle when angle is next by degree
|
||||
// ANGLE_CHART sorted descending: Mars(188)→Moon(97)→MC(90)→Sun(8)→ASC(0)
|
||||
// Moon is idx 1; NXT steps to MC (idx 2).
|
||||
it("T15g: clicking NXT from Moon (97°) activates MC (90°, next clockwise)", () => {
|
||||
const moonGroup = svgEl.querySelector("[data-planet='Moon']");
|
||||
expect(moonGroup).not.toBeNull("expected [data-planet='Moon']");
|
||||
moonGroup.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
const nxtBtn = tooltipEl.querySelector(".nw-tt-nxt");
|
||||
nxtBtn.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
expect(tooltipEl.textContent).toContain("Midheaven");
|
||||
const mcGroup = svgEl.querySelector("[data-angle='MC']");
|
||||
expect(mcGroup.classList.contains("nw-angle--active")).toBe(true);
|
||||
expect(moonGroup.classList.contains("nw-planet--active")).toBe(false);
|
||||
});
|
||||
|
||||
// T15h — PRV from an angle steps back into a planet
|
||||
it("T15h: clicking PRV from MC (90°) activates Moon (97°, previous counterclockwise)", () => {
|
||||
const mcGroup = svgEl.querySelector("[data-angle='MC']");
|
||||
mcGroup.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
const prvBtn = tooltipEl.querySelector(".nw-tt-prv");
|
||||
prvBtn.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
const moonGroup = svgEl.querySelector("[data-planet='Moon']");
|
||||
expect(moonGroup.classList.contains("nw-planet--active")).toBe(true);
|
||||
expect(mcGroup.classList.contains("nw-angle--active")).toBe(false);
|
||||
});
|
||||
|
||||
// T15i — NXT from ASC (lowest degree, 0°) wraps to Mars (highest degree, 188°)
|
||||
it("T15i: NXT from ASC (0°, lowest) wraps clockwise to Mars (188°, highest)", () => {
|
||||
const ascGroup = svgEl.querySelector("[data-angle='ASC']");
|
||||
ascGroup.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
const nxtBtn = tooltipEl.querySelector(".nw-tt-nxt");
|
||||
nxtBtn.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
||||
|
||||
expect(tooltipEl.textContent).toContain("Mars");
|
||||
const marsGroup = svgEl.querySelector("[data-planet='Mars']");
|
||||
expect(marsGroup.classList.contains("nw-planet--active")).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user