Stopka: dyskretne "powered by gethumanai.pl" na każdej stronie i w grafie
W _page_shell dopisek idzie do istniejącej stopki, tym samym małym wyciszonym fontem co nota o generatorze. Viewer grafu stopki nie ma (main wypełnia okno), więc w gen_viz.py dopisek ląduje w nagłówku obok "OKF bundle", w tej samej klasie .muted — przez łatkę na _load_template, tak samo jak dotychczasowa łatka na viz.js: repo upstream zostaje nietknięte, a brak kotwicy przerywa regenerację zamiast po cichu gubić dopisek. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
10384662b4
commit
f913a8af53
|
|
@ -546,7 +546,8 @@ def _page_shell(
|
|||
<nav>{nav}</nav>
|
||||
{content}
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>{script_tag}
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>{script_tag}
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
|
|
|||
34
gen_viz.py
34
gen_viz.py
|
|
@ -308,7 +308,11 @@ def _point_concepts_to_pages(graph: dict) -> None:
|
|||
MISSING_PAGES.append(page)
|
||||
|
||||
|
||||
# --- jedyna ingerencja w viewer ---------------------------------------
|
||||
# --- ingerencje w viewer ----------------------------------------------
|
||||
#
|
||||
# Dwie, obie w locie na stringach wstawianych do viz.html — repo upstream
|
||||
# zostaje nietknięte: (1) reguła stylu dla węzłów "external" w viz.js,
|
||||
# (2) dopisek „powered by” w nagłówku szablonu (viewer nie ma stopki).
|
||||
#
|
||||
# Kolor węzła jest sterowany danymi ("background-color": "data(color)"),
|
||||
# więc odróżnienie kolorem nie wymaga tykania viewera. Kształt już tak:
|
||||
|
|
@ -360,6 +364,34 @@ def _load_asset(name: str) -> str:
|
|||
G._load_asset = _load_asset
|
||||
|
||||
|
||||
# Viewer nie ma stopki (main wypełnia okno), więc dopisek ląduje w nagłówku,
|
||||
# obok istniejącego „OKF bundle” — ta sama klasa `.muted`, czyli ten sam mały
|
||||
# wyciszony font co reszta metadanych paska.
|
||||
_CREDIT_ANCHOR = ' <span class="muted">OKF bundle</span>\n'
|
||||
|
||||
_CREDIT_MARKUP = (
|
||||
' <span class="muted">· powered by <a href="https://gethumanai.pl"'
|
||||
' target="_blank" rel="noopener" style="color:inherit">gethumanai.pl</a>'
|
||||
"</span>\n"
|
||||
)
|
||||
|
||||
_upstream_load_template = G._load_template
|
||||
|
||||
|
||||
def _load_template() -> str:
|
||||
"""Upstreamowy szablon + dyskretny dopisek „powered by” w nagłówku."""
|
||||
template = _upstream_load_template()
|
||||
if _CREDIT_ANCHOR not in template:
|
||||
raise SystemExit(
|
||||
"gen_viz.py: nie znaleziono kotwicy nagłówka w templates/viz.html — "
|
||||
"upstream się zmienił, popraw _CREDIT_ANCHOR przed regeneracją."
|
||||
)
|
||||
return template.replace(_CREDIT_ANCHOR, _CREDIT_ANCHOR + _CREDIT_MARKUP, 1)
|
||||
|
||||
|
||||
G._load_template = _load_template
|
||||
|
||||
|
||||
# --- łatki na generator upstreamowy -----------------------------------
|
||||
|
||||
_upstream_extract_links = G._extract_links
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Wariant Serfaus-Fiss-Ladis</h2>
|
||||
<ul class="cards"><li><a href="sfl/region.html">Serfaus-Fiss-Ladis (SFL)</a> <span class="chip">region</span><p>Wariant alternatywny i najtańszy budżetowo: 214 km na słonecznym płaskowyżu, infrastruktura skrojona pod rodziny, a termin 16–23.01 to u nich oficjalnie niski sezon.</p></li><li><a href="sfl/oferty/apart-ideal-serfaus.html">Apart Ideal (Serfaus)</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Sześć apartamentów z oceną 4.8/5, 50 m od podziemnego metra w Serfaus — pełne doświadczenie regionu za dopłatą, PLAN B wariantu SFL.</p></li><li><a href="sfl/oferty/haus-central-ladis.html">Haus Central (Apart Central), Ladis</a> <span class="chip">SZACUNEK</span> <span class="chip">oferta</span><p>Dokładnie cztery apartamenty z balkonami przy kolejce Sonnenbahn w najtańszej wsi płaskowyżu — cały dom dla grupy, PLAN A wariantu SFL.</p></li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -164,7 +164,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail (szablon EN): 4 apartamenty, 16–23.01.2027, konfiguracja 4+4+3+3, cena grupowa.</li><li class="task"><input type="checkbox" disabled> Alternatywy w Kappl, jeśli brak miejsc: Apartments Kappl (apartments.kappl.at — skibus 100 m, narciarnia z suszarką), Ferienwohnen Mattle (centrum, blisko trasy i skibusa), Apart Avenzio (3 min od gondoli Kappl).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -162,7 +162,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail: ile apartamentów dostępnych 16–23.01.2027, konfiguracje łóżek.</li><li class="task"><input type="checkbox" disabled> Jeśli < 4 jednostek: dobrać drugi dom w Kappl (lista alternatyw w karcie Brandau).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -180,6 +180,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Ocena względem Saalbach (bazowego planu)</h2>
|
||||
<p><strong>+</strong> najwyżej położony i najbardziej "wow" teren; Samnaun; tor saneczkowy. <strong>−</strong> skipass najdroższy (brak zniżki 17+); mieszkanie poza główną areną (codziennie 10 min skibusem do Ischgl); gastronomia najdroższa.</p>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -164,7 +164,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail: wszystkie 4 apartamenty, 16–23.01.2027, 4+4+3+3.</li><li class="task"><input type="checkbox" disabled> Potwierdzić odległość do przystanku skibusa i częstotliwość rano.</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail: dostępność 4 jednostek 16–23.01.2027.</li><li class="task"><input type="checkbox" disabled> Alternatywy w Olang, jeśli brak: Residence Maximilian (centrum, prywatna sauna w apartamencie), Aparthotel Familiaris (family resort z basenami — wyższa półka, dzieci 0–18 target), Residence Sonnwies (opcja kolacji w hotelu Markushof obok).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Ocena względem Saalbach</h2>
|
||||
<p><strong>+</strong> Dolomity bez powtórki Sella Rondy; wycieczki Alta Badia/Cortina na karnecie; junior do 18 lat (17-latek bez dopłaty); tania dolina. <strong>−</strong> "objazdowość" wymaga kolejki/auta (jedna góra na co dzień); dojazd ~100 km dłuższy niż do Saalbach.</p>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<section data-section="Oferty — SFL"><h2>Oferty — SFL</h2><ul class="links"><li><a href="https://narty27.kapala.org/pages/sfl/oferty/haus-central-ladis.html">Haus Central (Apart Central)</a><code class="url">https://narty27.kapala.org/pages/sfl/oferty/haus-central-ladis.html</code><p>PLAN A · Ladis</p></li><li><a href="https://narty27.kapala.org/pages/sfl/oferty/apart-ideal-serfaus.html">Apart Ideal</a><code class="url">https://narty27.kapala.org/pages/sfl/oferty/apart-ideal-serfaus.html</code><p>PLAN B · Serfaus (obrzeża)</p></li></ul></section>
|
||||
<section data-section="Pozostałe"><h2>Pozostałe</h2><ul class="links"><li><a href="https://narty27.kapala.org/pages/szablon-maila.html">Szablon zapytania grupowego (EN)</a><code class="url">https://narty27.kapala.org/pages/szablon-maila.html</code><p>Gotowy angielski mail z zapytaniem o 4 apartamenty dla 14 osób w terminie 16–23.01.2027 wraz z notatkami…</p></li><li><a href="https://narty27.kapala.org/pages/start.html">Start pod własną ścieżką</a><code class="url">https://narty27.kapala.org/pages/start.html</code><p>Ten sam landing co adres główny — przydaje się w zakładkach.</p></li></ul></section>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
function collectAll() {
|
||||
var lines = [];
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Tylko jeśli plany A i B nie wypalą: sprawdzić ceny datami 16–23.01.2027.</li><li class="task"><input type="checkbox" disabled> Zweryfikować najnowsze opinie (Booking/Google, filtr: zima 2026).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -167,7 +167,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Wpisać daty 16–23.01.2027 w silnik na alpenparks.at → zrzut cen rzeczywistych dla 4 jednostek.</li><li class="task"><input type="checkbox" disabled> Równolegle mail grupowy z pytaniem o rabat przy 4 apartamentach.</li><li class="task"><input type="checkbox" disabled> Sprawdzić politykę anulacji (sieciówki często mają elastyczne taryfy za dopłatą — przy grupie 14 os. warto).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Przeszukać portale (lista w nagłówku) filtrem: 14 os., 16–23.01.2027, Viehhofen/Maishofen/Fieberbrunn.</li><li class="task"><input type="checkbox" disabled> Shortlista 3 domów → weryfikacja opinii → zapytania.</li><li class="task"><input type="checkbox" disabled> Umowa wewnętrzna grupy: zaliczki, zasady rezygnacji, podział od osoby.</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -172,7 +172,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia (opcjonalnie)</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail do Dietera: cena za 7 os./apartament zamiast 10–12 — jeśli ≤ 5 000 €, wariant wraca do rozważań (~2 900/2 200 € na rodzinę).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -167,6 +167,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Sprawdzić dostępność 4 apartamentów: 16–23.01.2027 (opcja B: 9–16.01) — Booking + strona All in One Apartments.</li><li class="task"><input type="checkbox" disabled> Wysłać zapytanie grupowe mailem (4 jednostki, 14 os., prośba o cenę grupową — przy 4 apartamentach rabat direct jest normą).</li><li class="task"><input type="checkbox" disabled> Dopytać: wysokość kaucji, sprzątanie końcowe, taksa, polityka anulacji.</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -168,7 +168,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Mail z zapytaniem o dostępność wszystkich apartamentów 16–23.01.2027 (opcja B: 9–16.01) + konfigurację łóżek dla 4+4+3+3.</li><li class="task"><input type="checkbox" disabled> Zapytać o cenę za zajęcie całego obiektu (package deal).</li><li class="task"><input type="checkbox" disabled> Potwierdzić rozkład skibusa w styczniu (częstotliwość rano 8:30–9:30).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -180,6 +180,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Kalendarz decyzji</h2>
|
||||
<ol><li><strong>Sierpień 2026</strong> — wysłanie zapytań grupowych do obiektów (<a href="szablon-maila.html">szablon maila</a>), zebranie ofert, wybór.</li><li><strong>Wrzesień 2026</strong> — rezerwacja + zaliczki (typowo 30%).</li><li><strong>~16.10.2026</strong> — ostateczny deadline darmowej anulacji dla Glemm Lodge (91 dni przed 16.01); inne obiekty: sprawdzić indywidualnie.</li><li><strong>Jesień 2026</strong> — potwierdzenie cen skipassów 26/27, decyzja o zakupie online (ewentualne przedsprzedaże).</li><li><strong>Grudzień 2026</strong> — dopłaty (typowo 90 dni przed), organizacja aut, sprzętu, ubezpieczeń (rekomendowane: koszty rezygnacji + NNW/OC narciarskie).</li></ol>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -164,6 +164,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Enquiry przez portal regionu: 4 apartamenty, 16–23.01.2027.</li><li class="task"><input type="checkbox" disabled> Porównać z ofertą z Ladis (Haus Central) po otrzymaniu obu cen — decyzja grupy: dopłacać do Serfaus czy nie.</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -164,7 +164,8 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Do zrobienia</h2>
|
||||
<ul><li class="task"><input type="checkbox" disabled> Zapytanie przez system serfaus-fiss-ladis.at (przycisk enquiry) lub mail: 4 apartamenty, 16–23.01.2027, 4+4+3+3.</li><li class="task"><input type="checkbox" disabled> Alternatywa w Ladis: Laudegghof (4★ apartamenty, jacuzzi/spa, 8.0 na Expedia, sprzątanie 100–120 €/apartament).</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
<script>
|
||||
document.querySelectorAll('.gallery').forEach(function (gallery) {
|
||||
var big = gallery.querySelector('.gallery-main img');
|
||||
|
|
|
|||
|
|
@ -173,6 +173,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Ocena względem Saalbach</h2>
|
||||
<p><strong>+</strong> nasz termin = ich niski sezon (unikat wśród 4 wariantów!); najbardziej dziecięco-rodzinna infrastruktura; słoneczny płaskowyż; skipassy realnie najtańsze po Livigno. <strong>−</strong> mniej "objazdowy" charakter niż Skicircus (jeden połączony teren, ale bez efektu pętli); apres-ski/wieczorne życie skromne (to celowo rodzinny kurort); nastolatki-eksperci mogą po 4 dniach znać teren na pamięć.</p>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<p class="lead">Karta regionu = skipassy, dojazd, terminy, koszty życia i budżet całkowity.</p>
|
||||
<ul class="regions"><li><a href="/pages/region.html" class="hero" style="background-image:linear-gradient(rgba(15,23,42,.62),rgba(15,23,42,.72)),url('/pages/img/alpenparks-sonnleiten/01.jpg')">Saalbach (baza)<small>Budżet grupy: ~14 000–18 000 €</small></a></li><li><a href="/pages/ischgl/region.html" class="hero" style="background-image:linear-gradient(rgba(15,23,42,.62),rgba(15,23,42,.72)),url('/pages/img/apartment-brandau-kappl/01.jpg')">Ischgl/Paznaun<small>Budżet grupy: ~13 500–16 000 €</small></a></li><li><a href="/pages/kronplatz/region.html" class="hero" style="background-image:linear-gradient(rgba(15,23,42,.62),rgba(15,23,42,.72)),url('/pages/img/haeuslerhof-valdaora/01.jpg')">Kronplatz<small>Budżet grupy: ~13 200–16 300 €</small></a></li><li><a href="/pages/sfl/region.html" class="hero" style="background-image:linear-gradient(rgba(15,23,42,.62),rgba(15,23,42,.72)),url('/pages/img/haus-central-ladis/01.jpg')">SFL<small>Budżet grupy: ~12 800–15 700 €</small></a></li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -170,6 +170,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Notatki taktyczne</h2>
|
||||
<ul><li>Wysyłać z jednego "kontaktowego" adresu — jedna osoba negocjuje za grupę.</li><li>Nie podawać budżetu w pierwszym mailu; najpierw ich oferta.</li><li>Po otrzymaniu 2 ofert można uczciwie napisać "we received a comparable offer at X €" — w Alpach to normalna praktyka.</li><li>Prosić o ofertę mailem (pisemnie), nie telefonicznie.</li></ul>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -172,6 +172,7 @@ td.thumb .placeholder { display: flex; width: 120px; height: 80px; border-radius
|
|||
<h2>Konwencja danych</h2>
|
||||
<p>Każda karta oferty ma frontmatter YAML z polami OKF (<code>type</code>, <code>title</code>, <code>description</code>, <code>timestamp</code>, <code>tags</code>) oraz z polami rozszerzeń: <code>id</code>, <code>nazwa</code>, <code>miejscowosc</code>, <code>gps</code>, <code>odleglosc_od_wyciagu</code>, <code>ocena</code>, <code>cena_za_apartament_tydzien</code>, <code>koszt_rodzina_2p2</code>, <code>koszt_rodzina_2p1</code>, <code>status_ceny</code> (SZACUNEK / ZWERYFIKOWANE), <code>priorytet</code>, <code>www</code>, <code>ostatnia_aktualizacja</code> — stronę można generować statycznie prosto z tych pól (Astro/Hugo/Eleventy czytają frontmatter natywnie).</p>
|
||||
<footer>Wygenerowane z bundle'a OKF przez <code>gen_pages.py</code> — nie edytuj
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.</footer>
|
||||
tych plików, edytuj <code>.md</code> i przegeneruj.<br>
|
||||
powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener">gethumanai.pl</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
1
viz.html
1
viz.html
|
|
@ -178,6 +178,7 @@ hr { border: none; border-top: 1px solid #e2e8f0; margin: 14px 0; }
|
|||
<div class="title">
|
||||
<strong id="bundle-name"></strong>
|
||||
<span class="muted">OKF bundle</span>
|
||||
<span class="muted">· powered by <a href="https://gethumanai.pl" target="_blank" rel="noopener" style="color:inherit">gethumanai.pl</a></span>
|
||||
</div>
|
||||
<div class="controls">
|
||||
<input id="search" type="search" placeholder="Search title / id / tag">
|
||||
|
|
|
|||
Loading…
Reference in a new issue