${this.t( 'Where each graha transits at {{when}}, read against the natal chart of {{birth}}.', { when: formatDateTime(this.effectiveLang(), d.transitDatetime), birth: formatDateTime(this.effectiveLang(), d.birthDatetime), }, )}
${ moonSign ? html`${this.t('Gochara houses are counted from the natal Moon in {{sign}}.', { sign: moonSign })}
` : nothing } ${renderFrameCaption(this.effectiveLang(), d.frame, this.translator)}${k.description}
`)}${label} ${items .map((a) => typeof a.orb === 'number' ? this.t('{{aspect}} natal {{planet}} ({{orb}}°)', { aspect: formatAspectName({ type: a.aspectType }), planet: a.natalPlanet, orb: formatNumber(this.effectiveLang(), a.orb, 1), }) : this.t('{{aspect}} natal {{planet}}', { aspect: formatAspectName({ type: a.aspectType }), planet: a.natalPlanet, }), ) .join(' · ')}
`; } /** * The eight-segment kaksha bar plus its one-line reading. * * @remarks * `bindu` has three states and each renders differently: `true` supports the transit, `false` does not, and `null` means the graha has no Bhinnashtakavarga at all, which is Rahu and Ketu. The null case gets the neutral segment and NO verdict sentence, the same way the planets table leaves the avastha cells blank for the nodes rather than printing a zero. */ private renderKaksha(k: Kaksha | undefined) { if (!k || typeof k.number !== 'number') return nothing; const here = k.number; const verdict = k.bindu === true ? 'yes' : k.bindu === false ? 'no' : ''; const total = KAKSHA_COUNT; const head = k.lord && typeof k.startDegree === 'number' && typeof k.endDegree === 'number' ? this.t( 'Kaksha {{n}} of {{total}}, ruled by {{graha}}, spanning {{start}}° to {{end}}° of the sign', { n: here, total, graha: k.lord, start: formatNumber(this.effectiveLang(), k.startDegree, 2), end: formatNumber(this.effectiveLang(), k.endDegree, 2), }, ) : k.lord ? this.t('Kaksha {{n}} of {{total}}, ruled by {{graha}}', { n: here, total, graha: k.lord, }) : typeof k.startDegree === 'number' && typeof k.endDegree === 'number' ? this.t( 'Kaksha {{n}} of {{total}}, spanning {{start}}° to {{end}}° of the sign', { n: here, total, start: formatNumber(this.effectiveLang(), k.startDegree, 2), end: formatNumber(this.effectiveLang(), k.endDegree, 2), }, ) : this.t('Kaksha {{n}} of {{total}}', { n: here, total }); const gave = k.bindu === null || k.bindu === undefined ? '' : typeof k.binduCount === 'number' ? k.bindu ? this.t( 'this kaksha lord gave bindu, {{count}} of {{total}} in this sign', { count: k.binduCount, total }, ) : this.t( 'this kaksha lord gave no bindu, {{count}} of {{total}} in this sign', { count: k.binduCount, total }, ) : k.bindu ? this.t('this kaksha lord gave bindu') : this.t('this kaksha lord gave no bindu'); return html` `; } } declare global { interface HTMLElementTagNameMap { 'roxy-gochara-table': RoxyGocharaTable; } }