// Zakładka „Skompiluj" — składanie raportu (PRE-23). // // Raport ma trzy kawałki liczone w różnych miejscach: // 1. horoskop — liczy serwer przy wysłaniu tego formularza, // 2. interpretacja natalna — z zakładki Interpretacje (natal.js), // 3. predykcje okresowe — z zakładki Kalendarz (predictions.js). // // Punkty 2 i 3 mieszkają w magazynie przeglądarki, więc to tutaj je dokładamy. // Odczytujemy je przez API tamtych modułów, a nie sięgając wprost do // localStorage — dzięki temu format danych ma JEDNEGO właściciela. // // Pokazujemy też, CZEGO BRAKUJE. Bez tego użytkownik złożyłby niekompletny raport // i dowiedział się o tym dopiero po otwarciu PDF-a. (function () { 'use strict'; function esc(s) { return String(s == null ? '' : s) .replace(/&/g, '&').replace(//g, '>'); } function readNatal() { return (window.astrololoNatal && window.astrololoNatal.read()) || null; } function readPredictions() { return (window.astrololoPredictions && window.astrololoPredictions.read()) || []; } function item(ok, label, hint) { return '
  • ' + (ok ? '✓ ' : '✗ ') + esc(label) + (ok ? '' : ' — ' + esc(hint) + '') + '
  • '; } function renderReadiness(hasChart) { var host = document.getElementById('readiness'); if (!host) return; var natal = readNatal(); var preds = readPredictions(); var parts = [ item(hasChart, 'Policzony horoskop', 'wypełnij dane i kliknij „Złóż podsumowanie"'), item(!!natal, 'Interpretacja natalna', 'wygeneruj ją na zakładce Interpretacje — zapamięta się sama'), item(preds.length > 0, 'Predykcje okresowe' + (preds.length ? ' (' + preds.length + ')' : ''), 'policz horoskop na wybrany okres w Kalendarzu') ]; host.innerHTML = '
    Materiał do raportu
    '; } function renderNatal() { var host = document.getElementById('reportNatal'); if (!host) return; var natal = readNatal(); if (!natal) { host.innerHTML = '
    Interpretacja natalna
    ' + '

    Brak — wygeneruj ją na zakładce Interpretacje.

    '; return; } host.innerHTML = '
    Interpretacja natalna ' + '· zapamiętana ' + esc(String(natal.saved_at).slice(0, 10)) + '
    ' + esc(natal.text) + '
    '; } function renderPredictions() { var host = document.getElementById('reportPredictions'); if (!host) return; var preds = readPredictions(); if (!preds.length) { host.innerHTML = '
    Predykcje okresowe
    ' + '

    Brak — policz horoskop na wybrany okres w Kalendarzu.

    '; return; } var blocks = preds.map(function (p) { return '
    ' + esc(p.from_date) + ' – ' + esc(p.to_date) + '
    ' + '
    ' + esc(p.text) + '
    '; }).join(''); host.innerHTML = '
    Predykcje okresowe (' + preds.length + ')
    ' + blocks; } function ready(fn) { if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); } ready(function () { if (!document.getElementById('readiness')) return; // nie ta zakładka // Horoskop jest w dokumencie tylko po wysłaniu formularza. renderReadiness(!!document.getElementById('reportPerson')); renderNatal(); renderPredictions(); }); })();