update to frame and tarot times
This commit is contained in:
@@ -212,6 +212,10 @@
|
||||
const windowDecans = windowDecanIds
|
||||
.map((decanId) => decanById.get(decanId) || null)
|
||||
.filter(Boolean);
|
||||
const windowSignIds = tarotDb.courtSignWindows?.[cardName] || [];
|
||||
const windowSigns = windowSignIds
|
||||
.map((signId) => signById[signId] || null)
|
||||
.filter(Boolean);
|
||||
const explicitWindowRange = buildTokenDateRange(
|
||||
tarotDb.courtDateRanges?.[cardName]?.start,
|
||||
tarotDb.courtDateRanges?.[cardName]?.end
|
||||
@@ -240,6 +244,24 @@
|
||||
)
|
||||
);
|
||||
|
||||
if (meta?.decan?.tarotMinorArcana) {
|
||||
dynamicRelations.push(
|
||||
createRelation(
|
||||
"tarotCard",
|
||||
`${meta.signId}-${meta.index}-${rankKey}-${suitKey}-decan-card`,
|
||||
`Decan card: ${meta.decan.tarotMinorArcana} (${meta.signName} decan ${meta.index})`,
|
||||
{
|
||||
cardName: meta.decan.tarotMinorArcana,
|
||||
decanId: meta.decan.id || `${meta.signId}-${meta.index}`,
|
||||
signId: meta.signId,
|
||||
signName: meta.signName,
|
||||
decanIndex: meta.index,
|
||||
dateRange: meta.dateRange?.label || null
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
const ruler = planets?.[meta?.decan?.rulerPlanetId] || null;
|
||||
if (ruler) {
|
||||
dynamicRelations.push(
|
||||
@@ -290,9 +312,87 @@
|
||||
}
|
||||
});
|
||||
|
||||
if (windowDecans.length) {
|
||||
const firstRange = windowDecans[0].dateRange;
|
||||
const lastRange = windowDecans[windowDecans.length - 1].dateRange;
|
||||
windowSigns.forEach((sign) => {
|
||||
const signDateRange = buildTokenDateRange(sign?.start, sign?.end);
|
||||
const signName = sign?.name || sign?.id || "";
|
||||
const signSymbol = sign?.symbol || "";
|
||||
const relatedDecans = Array.isArray(decansBySign?.[sign.id]) ? decansBySign[sign.id] : [];
|
||||
|
||||
dynamicRelations.push(
|
||||
createRelation(
|
||||
"signWindow",
|
||||
`${sign.id}-${rankKey}-${suitKey}`,
|
||||
`Sign window: ${signSymbol} ${signName} (0°–30°)${signDateRange ? ` · ${signDateRange.label}` : ""}`.trim(),
|
||||
{
|
||||
signId: sign.id,
|
||||
signName,
|
||||
signSymbol,
|
||||
startDegree: 0,
|
||||
endDegree: 30,
|
||||
dateStart: signDateRange?.startToken || null,
|
||||
dateEnd: signDateRange?.endToken || null,
|
||||
dateRange: signDateRange?.label || null
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
relatedDecans.forEach((decan) => {
|
||||
if (!decan?.tarotMinorArcana) {
|
||||
return;
|
||||
}
|
||||
|
||||
dynamicRelations.push(
|
||||
createRelation(
|
||||
"tarotCard",
|
||||
`${sign.id}-${decan.id || decan.tarotMinorArcana}-${rankKey}-${suitKey}-sign-card`,
|
||||
`Sign card: ${decan.tarotMinorArcana} (${signName})`,
|
||||
{
|
||||
cardName: decan.tarotMinorArcana,
|
||||
decanId: decan.id || null,
|
||||
signId: sign.id,
|
||||
signName,
|
||||
signSymbol,
|
||||
dateRange: signDateRange?.label || null
|
||||
}
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
if (signDateRange?.start && signDateRange?.end) {
|
||||
const monthNumbers = listMonthNumbersBetween(signDateRange.start, signDateRange.end);
|
||||
monthNumbers.forEach((monthNo) => {
|
||||
const monthId = monthIdByNumber[monthNo];
|
||||
const monthName = monthNameByNumber[monthNo] || `Month ${monthNo}`;
|
||||
const monthKey = `${monthId}:${sign.id}:sign-window`;
|
||||
if (!monthId || monthKeys.has(monthKey)) {
|
||||
return;
|
||||
}
|
||||
monthKeys.add(monthKey);
|
||||
|
||||
dynamicRelations.push(
|
||||
createRelation(
|
||||
"calendarMonth",
|
||||
`${monthId}-${sign.id}-${rankKey}-${suitKey}-sign-window`,
|
||||
`Calendar month: ${monthName} (${signName} sign window)`,
|
||||
{
|
||||
monthId,
|
||||
name: monthName,
|
||||
monthOrder: monthNo,
|
||||
signId: sign.id,
|
||||
signName,
|
||||
dateRange: signDateRange?.label || null
|
||||
}
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (windowDecans.length || windowSigns.length) {
|
||||
const firstRange = windowDecans.length ? windowDecans[0].dateRange : null;
|
||||
const lastRange = windowDecans.length ? windowDecans[windowDecans.length - 1].dateRange : null;
|
||||
const firstSignRange = windowSigns.length ? buildTokenDateRange(windowSigns[0]?.start, windowSigns[0]?.end) : null;
|
||||
const lastSignRange = windowSigns.length ? buildTokenDateRange(windowSigns[windowSigns.length - 1]?.start, windowSigns[windowSigns.length - 1]?.end) : null;
|
||||
const fallbackWindowRange = firstRange && lastRange
|
||||
? {
|
||||
start: firstRange.start,
|
||||
@@ -301,7 +401,15 @@
|
||||
endToken: lastRange.endToken,
|
||||
label: `${formatMonthDayLabel(firstRange.start)}–${formatMonthDayLabel(lastRange.end)}`
|
||||
}
|
||||
: null;
|
||||
: (firstSignRange && lastSignRange
|
||||
? {
|
||||
start: firstSignRange.start,
|
||||
end: lastSignRange.end,
|
||||
startToken: firstSignRange.startToken,
|
||||
endToken: lastSignRange.endToken,
|
||||
label: `${formatMonthDayLabel(firstSignRange.start)}–${formatMonthDayLabel(lastSignRange.end)}`
|
||||
}
|
||||
: null);
|
||||
const windowRange = explicitWindowRange || fallbackWindowRange;
|
||||
const windowLabel = windowRange?.label || "--";
|
||||
|
||||
@@ -314,7 +422,8 @@
|
||||
dateStart: windowRange?.startToken || null,
|
||||
dateEnd: windowRange?.endToken || null,
|
||||
dateRange: windowLabel,
|
||||
decanIds: windowDecanIds
|
||||
decanIds: windowDecanIds,
|
||||
signIds: windowSignIds
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user