Add /preview pages

This commit is contained in:
lorenz.stechauner committed 2026-05-04 20:19:06 +02:00
1 parent fbb0ac86d5
commit a7658c33b1
43 files changed
+491 -19

No files matched your search

+3 -3
View File
@@ -12,8 +12,8 @@
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta property="og:site_name" content="Elwig"/>
<meta property="og:title" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
<meta property="og:site_name" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
<meta property="og:title" content="Über - Elwig"/>
<meta property="og:description" content="Elwig ist eine spezialisierte, praxisnah entwickelte Softwarelösung zur Unterstützung von Winzergenossenschaften bei ihren zentralen organisatorischen und administrativen Aufgaben entlang der tatsächlichen Abläufe im genossenschaftlichen Weinbau – von der Traubenübernahme bis zur jährlichen Abrechnung."/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://elwig.at/"/>
@@ -32,9 +32,9 @@
<a href="https://elwig.at/de/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
</div>
<ul>
<li><a href="#">Start</a></li>
<li><a href="#about">Über</a></li>
<li><a href="#clients">Genossenschaften</a></li>
<li><a href="/de/vorschau">Vorschau</a></li>
<li><a href="/files/">Downloads</a></li>
<li><a href="https://git.necronda.net/winzer/">Quellcode</a></li>
</ul>
+120
View File
@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="de" prefix="og: https://ogp.me/ns#">
<head>
<meta charset="UTF-8"/>
<title>Vorschau - Elwig - Elektronische Winzergenossenschaftsverwaltung</title>
<link rel="icon" href="/favicon.ico" sizes="16x16 20x20 24x24 30x30 32x32 36x36 40x40 48x48 60x60 64x64 72x72 80x80 96x96 128x128 256x256"/>
<link rel="stylesheet" href="/res/style.css?v=2025-01-12"/>
<link rel="alternate" href="/en/preview" hreflang="en"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<meta name="theme-color" content="#A040C0"/>
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta property="og:site_name" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
<meta property="og:title" content="Vorschau - Elwig"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://elwig.at/preview"/>
<meta property="og:image" content="https://elwig.at/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png"/>
<meta property="og:image:type" content="image/png"/>
<meta property="og:image:width" content="1136"/>
<meta property="og:image:height" content="713"/>
<meta property="og:locale" content="de"/>
<meta property="og:ttl" content="60"/>
<meta name="twitter:card" content="summary_large_image"/>
<script src="/res/preview.js"></script>
</head>
<body class="header-footer" style="background-color: var(--bg-color);">
<header>
<nav class="index">
<div>
<a href="https://elwig.at/de/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
</div>
<ul>
<li><a href="/de/#about">Über</a></li>
<li><a href="/de/#clients">Genossenschaften</a></li>
<li><a href="/de/vorschau">Vorschau</a></li>
<li><a href="/files/">Downloads</a></li>
<li><a href="https://git.necronda.net/winzer/">Quellcode</a></li>
</ul>
<div>
<a href="/en/preview" class="flag">
<div></div>
</a>
</div>
</nav>
</header>
<main class="preview">
<div class="window members" tabindex="0">
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder.png" class="selected" alt="Mitglieder-Fenster, ohne ausgewähltes Mitglied"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Musterbauer.png" alt="Mitglieder-Fenster, MUSTERBAUER Matthäus ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Mustermann.png" alt="Mitglieder-Fenster, MUSTERMANN Max ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinbauer.png" alt="Mitglieder-Fenster, WEINBAUER Wernhardt ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinland-Weine.png" alt="Mitglieder-Fenster, Weinland Weine AG ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Winzer.png" alt="Mitglieder-Fenster, WINZER Waltraud ausgewählt"/>
<canvas width="1236" height="693"></canvas>
</div>
<p style="text-align: center;">Die Fenster können teilweise interaktiv erkundet werden.</p>
<div class="window deliveries" tabindex="0">
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen.png" class="selected" alt="Lieferungen-Fenster, ohne ausgewählte Lieferung"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-1.png" alt="Lieferungen-Fenster, Lieferung 20250930X002, Teillieferung 1 ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-2.png" alt="Lieferungen-Fenster, Lieferung 20250930X002, Teillieferung 2 ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 1 ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-2.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 2 ausgewählt"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-3.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 3 ausgewählt"/>
<canvas width="1136" height="713"></canvas>
</div>
<div class="window receipt" tabindex="0">
<img src="/res/preview/v1.0.5.2/Lieferungen/Übernahme.png" class="selected" alt="Übernahme-Fenster"/>
</div>
<section>
<h4>Dokumente &ndash; Mitglieder</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Mitgliederliste.pdf">Mitgliederliste</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERBAUER_Matthäus.pdf">Stammdatenblatt MUSTERBAUER Matthäus</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERMANN_Max.pdf">Stammdatenblatt MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WEINBAUER_Wernhardt.pdf">Stammdatenblatt WEINBAUER Wernhardt</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_Weinland_Weine_AG.pdf">Stammdatenblatt Weinland Weine AG</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WINZER_Waltraud.pdf">Stammdatenblatt WINZER Waltraud</a></li>
</ul>
<h4>Dokumente &ndash; Lieferungen</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/Lieferjournal_2025.pdf">Lieferjournal 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X001.pdf">Lieferschein 20250930X001</a></li>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X002.pdf">Lieferschein 20250930X002</a></li>
</ul>
<h4>Dokumente &ndash; Auszahlung</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Mustermann.pdf">Anlieferungsbestätigung 2025 &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Weinbauer.pdf">Anlieferungsbestätigung 2025 &ndash; WEINBAUER Wernhart</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_1_Teilzahlung.pdf">Variantendaten 1. Teilzahlung 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-001_1_Teilzahlung.pdf">Traubengutschrift Nr. 2025/001 &ndash; 1. Teilzahlung &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-002_1_Teilzahlung.pdf">Traubengutschrift Nr. 2025/002 &ndash; 1. Teilzahlung &ndash; WEINBAUER Wernhart</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_Endauszahlung.pdf">Variantendaten Endauszahlung 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-003_Endauszahlung.pdf">Traubengutschrift Nr. 2025/003 &ndash; Endauszahlung &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-004_Endauszahlung.pdf">Traubengutschrift Nr. 2025/004 &ndash; Endauszahlung &ndash; WEINBAUER Wernhart</a></li>
</ul>
</section>
</main>
<footer>
<a href="https://elwig.at/"><img src="/res/elwig.png" alt="Elwig"/></a>
<p>
<strong>Impressum</strong><br/>
Lorenz Stechauner, Thomas Hilscher<br/>
Österreich (Austria)<br/>
</p>
<p>
<strong>Kontakt</strong><br/>
E-Mail: <a href="&#x6D;&#x61;&#x69;&#x6C;&#x74;&#x6F;&#x3A;contact&#x25;&#x34;&#x30;necronda&#x25;&#x32;&#x65;&#x6e;&#x65;&#x74;">contact<!--(at)-->&#x40;necronda<!--.net-->&#x2e;&#x6e;&#x65;&#x74;</a><br/>
</p>
</footer>
</body>
</html>
+3 -3
View File
@@ -12,8 +12,8 @@
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta property="og:site_name" content="Elwig"/>
<meta property="og:title" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
<meta property="og:site_name" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
<meta property="og:title" content="About - Elwig"/>
<meta property="og:description" content="Elwig is a specialized, practice-oriented software solution designed to support vintners' cooperatives in their core organizational and administrative tasks, aligned with real-world cooperative wine production workflows – from grape intake to annual settlement."/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://elwig.at/"/>
@@ -32,9 +32,9 @@
<a href="https://elwig.at/en/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
</div>
<ul>
<li><a href="#">Start</a></li>
<li><a href="#about">About</a></li>
<li><a href="#clients">Cooperatives</a></li>
<li><a href="/en/preview">Preview</a></li>
<li><a href="/files/">Downloads</a></li>
<li><a href="https://git.necronda.net/winzer/">Source&#160;Code</a></li>
</ul>
+121
View File
@@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="en" prefix="og: https://ogp.me/ns#">
<head>
<meta charset="UTF-8"/>
<title>Preview - Elwig - Electronic Management for Vintners' Cooperatives</title>
<link rel="icon" href="/favicon.ico" sizes="16x16 20x20 24x24 30x30 32x32 36x36 40x40 48x48 60x60 64x64 72x72 80x80 96x96 128x128 256x256"/>
<link rel="stylesheet" href="/res/style.css?v=2025-01-12"/>
<link rel="alternate" href="/de/vorschau" hreflang="de"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<meta name="theme-color" content="#A040C0"/>
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
<meta property="og:site_name" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
<meta property="og:title" content="Preview - Elwig"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://elwig.at/preview"/>
<meta property="og:image" content="https://elwig.at/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png"/>
<meta property="og:image:type" content="image/png"/>
<meta property="og:image:width" content="1136"/>
<meta property="og:image:height" content="713"/>
<meta property="og:locale" content="en"/>
<meta property="og:ttl" content="60"/>
<meta name="twitter:card" content="summary_large_image"/>
<script src="/res/preview.js"></script>
</head>
<body class="header-footer" style="background-color: var(--bg-color);">
<header>
<nav class="index">
<div>
<a href="https://elwig.at/en/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
</div>
<ul>
<li><a href="/en/#about">About</a></li>
<li><a href="/en/#clients">Cooperatives</a></li>
<li><a href="/en/preview">Preview</a></li>
<li><a href="/files/">Downloads</a></li>
<li><a href="https://git.necronda.net/winzer/">Source&#160;Code</a></li>
</ul>
<div>
<a href="/de/vorschau" class="flag">
<div></div>
</a>
</div>
</nav>
</header>
<main class="preview">
<div class="window members" tabindex="0">
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder.png" class="selected" alt="Member window, with no member selected"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Musterbauer.png" alt="Member window, with MUSTERBAUER Matthäus selected"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Mustermann.png" alt="Member window, with MUSTERMANN Max selected"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinbauer.png" alt="Member window, with WEINBAUER Wernhardt selected"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinland-Weine.png" alt="Member window, with Weinland Weine AG selected"/>
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Winzer.png" alt="Member window, with WINZER Waltraud selected"/>
<canvas width="1236" height="693"></canvas>
</div>
<p style="text-align: center;">The windows may be explored interactively.</p>
<div class="window deliveries" tabindex="0">
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen.png" class="selected" alt="Delivery window, with no delivery selected"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-1.png" alt="Delivery window, with delivery 20250930X002, delivery part 1, selected"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-2.png" alt="Delivery window, with delivery 20250930X002, delivery part 2, selected"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png" alt="Delivery window, with delivery 20250930X001, delivery part 1, selected"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-2.png" alt="Delivery window, with delivery 20250930X001, delivery part 2, selected"/>
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-3.png" alt="Delivery window, with delivery 20250930X001, delivery part 3, selected"/>
<canvas width="1136" height="713"></canvas>
</div>
<div class="window receipt" tabindex="0">
<img src="/res/preview/v1.0.5.2/Lieferungen/Übernahme.png" class="selected" alt="Receipt window"/>
</div>
<section>
<h4>Documents &ndash; Members</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Mitgliederliste.pdf">Member List</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERBAUER_Matthäus.pdf">Member Data Sheet MUSTERBAUER Matthäus</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERMANN_Max.pdf">Member Data Sheet MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WEINBAUER_Wernhardt.pdf">Member Data Sheet WEINBAUER Wernhardt</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_Weinland_Weine_AG.pdf">Member Data Sheet Weinland Weine AG</a></li>
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WINZER_Waltraud.pdf">Member Data Sheet WINZER Waltraud</a></li>
</ul>
<h4>Documents &ndash; Deliveries</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/Lieferjournal_2025.pdf">Delivery Journall 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X001.pdf">Delivery Note 20250930X001</a></li>
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X002.pdf">Delivery Note 20250930X002</a></li>
</ul>
<h4>Documents &ndash; Annual settlement</h4>
<ul>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Mustermann.pdf">Delivery Confirmation 2025 &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Weinbauer.pdf">Delivery Confirmation 2025 &ndash; WEINBAUER Wernhart</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_1_Teilzahlung.pdf">Payment Variant Data 1. Teilzahlung 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-001_1_Teilzahlung.pdf">Credit Note No. 2025/001 &ndash; 1. Teilzahlung &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-002_1_Teilzahlung.pdf">Credit Note No. 2025/002 &ndash; 1. Teilzahlung &ndash; WEINBAUER Wernhart</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_Endauszahlung.pdf">Payment Variant Data Endauszahlung 2025</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-003_Endauszahlung.pdf">Credit Note No. 2025/003 &ndash; Endauszahlung &ndash; MUSTERMANN Max</a></li>
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-004_Endauszahlung.pdf">Credit Note No. 2025/004 &ndash; Endauszahlung &ndash; WEINBAUER Wernhart</a></li>
</ul>
</section>
</main>
<footer>
<a href="https://elwig.at/"><img src="/res/elwig.png" alt="Elwig"/></a>
<p>
<strong>Imprint</strong><br/>
Lorenz Stechauner, Thomas Hilscher<br/>
Austria<br/>
</p>
<p>
<strong>Contact</strong><br/>
E-Mail: <a href="&#x6D;&#x61;&#x69;&#x6C;&#x74;&#x6F;&#x3A;contact&#x25;&#x34;&#x30;necronda&#x25;&#x32;&#x65;&#x6e;&#x65;&#x74;">contact<!--(at)-->&#x40;necronda<!--.net-->&#x2e;&#x6e;&#x65;&#x74;</a><br/>
</p>
</footer>
</body>
</html>
+9 -4
View File
@@ -1,8 +1,4 @@
<?php
header("Content-Length: 0");
switch ($_SERVER['PATH_INFO']) {
case '':
case '/':
$lang = 'de'; // prefer german
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $pref) {
@@ -15,9 +11,18 @@ switch ($_SERVER['PATH_INFO']) {
}
}
}
header("Content-Length: 0");
switch ($_SERVER['PATH_INFO']) {
case '':
case '/':
header("Status: 303");
header("Location: /$lang/");
break;
case '/preview':
case '/vorschau':
header("Status: 303");
header("Location: /$lang/" . ($lang === 'de' ? 'vorschau' : 'preview'));
break;
case '/changelog':
header("Status: 303");
header("Location: https://git.necronda.net/winzer/elwig/src/branch/main/CHANGELOG.md#changelog");
+98
View File
@@ -0,0 +1,98 @@
"use strict";
function getMembersRow(x, y, w=1236) {
const r = 1236 / w;
x *= r;
y *= r;
if (x <= 12 || x > 346) return -1;
const row = Math.floor((y - 113) / 20.5);
return (row >= 0 && row < 5) ? row : -1;
}
function getDeliveriesRow(x, y, w=1136) {
const r = 1136 / w;
x *= r;
y *= r;
if (x <= 12 || x > 395) return -1;
const row = Math.floor((y - 120) / 20.5);
return (row >= 0 && row < 2) ? row : -1;
}
function getDeliveryPartsRow(x, y, w=1136) {
const r = 1136 / w;
x *= r;
y *= r;
if (x <= 424 || x > 753) return [-1, -1];
const win = document.getElementsByClassName("window")[1];
const idx = Array.prototype.indexOf.call(win.children, win.getElementsByClassName("selected")[0]);
const len = {1: 2, 2: 2, 3: 3, 4: 3, 5: 3}[idx] ?? 0;
const row = Math.floor((y - 319) / 20);
return [{0: 0, 1: 1, 2: 1, 3: 2, 4: 2, 5: 2}[idx], len === 0 ? -1 : (row >= 0 && row < len) ? row : -1];
}
document.addEventListener("DOMContentLoaded", () => {
const windows = document.getElementsByClassName("window");
const w1 = windows[0];
const canvas1 = w1.getElementsByTagName("canvas")[0];
const ctx1 = canvas1.getContext("2d");
w1.addEventListener("mousemove", (evt) => {
ctx1.clearRect(0, 0, canvas1.width, canvas1.height);
const row = getMembersRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
if (row === -1) return;
ctx1.fillStyle = "#0078d740";
ctx1.fillRect(12, 113 + 20.5 * row, 334, 20.5);
});
w1.addEventListener("click", (evt) => {
const row = getMembersRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
for (const img of w1.getElementsByTagName("img")) img.classList.remove("selected");
w1.getElementsByTagName("img")[row + 1].classList.add("selected");
});
const w2 = windows[1];
const canvas2 = w2.getElementsByTagName("canvas")[0];
const ctx2 = canvas2.getContext("2d");
w2.addEventListener("mousemove", (evt) => {
ctx2.clearRect(0, 0, canvas2.width, canvas2.height);
const row = getDeliveriesRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
const partRow = getDeliveryPartsRow(evt.offsetX, evt.offsetY, evt.target.clientWidth)[1];
if (row !== -1) {
ctx2.fillStyle = "#0078d740";
ctx2.fillRect(12, 120 + 20.5 * row, 383, 20.5);
} else if (partRow !== -1) {
ctx2.fillStyle = "#0078d740";
ctx2.fillRect(424, 319 + 20 * partRow, 329, 20);
}
});
w2.addEventListener("click", (evt) => {
const row = getDeliveriesRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
const partRow = getDeliveryPartsRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
if (row !== -1 || partRow[1] !== -1) {
const idx = row !== -1 ? row * 2 + 1 : (partRow[0] - 1) * 2 + partRow[1] + 1;
for (const img of w2.getElementsByTagName("img")) img.classList.remove("selected");
w2.getElementsByTagName("img")[idx].classList.add("selected");
} else {
for (const img of w2.getElementsByTagName("img")) img.classList.remove("selected");
w2.getElementsByTagName("img")[0].classList.add("selected");
}
});
});
document.addEventListener("keydown", (evt) => {
const act = document.activeElement;
if (!act.classList.contains("window")) return;
let el = null;
if (evt.key === "ArrowUp" || evt.key === "ArrowLeft") {
el = act.getElementsByClassName("selected")[0].previousElementSibling;
evt.stopImmediatePropagation();
evt.preventDefault();
} else if (evt.key === "ArrowDown" || evt.key === "ArrowRight") {
el = act.getElementsByClassName("selected")[0].nextElementSibling;
evt.stopImmediatePropagation();
evt.preventDefault();
}
if (el && el.tagName === "IMG") {
for (const img of act.getElementsByTagName("img")) img.classList.remove("selected");
el.classList.add("selected");
}
});
Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

+126 -9
View File
@@ -92,15 +92,15 @@ nav a.flag div {
margin: 0.75rem 1rem;
}
nav a.flag[href='/de/'] div::before,
nav a.flag[href='/en/']:hover div::before,
nav a.flag[href='/en/']:focus div::before {
nav a.flag[href^='/de/'] div::before,
nav a.flag[href^='/en/']:hover div::before,
nav a.flag[href^='/en/']:focus div::before {
content: '\1F1EC\1F1E7'; /* GB */
}
nav a.flag[href='/en/'] div::before,
nav a.flag[href='/de/']:hover div::before,
nav a.flag[href='/de/']:focus div::before {
nav a.flag[href^='/en/'] div::before,
nav a.flag[href^='/de/']:hover div::before,
nav a.flag[href^='/de/']:focus div::before {
content: '\1F1E6\1F1F9'; /* AT */
}
@@ -416,7 +416,7 @@ table .unit {
}
}
@media screen and (max-width: 650px) {
@media screen and (max-width: 700px) {
nav.index li:first-child {
display: none;
}
@@ -425,7 +425,7 @@ table .unit {
}
}
@media screen and (max-width: 550px) {
@media screen and (max-width: 600px) {
nav.index li:nth-child(2) {
display: none;
}
@@ -435,7 +435,7 @@ table .unit {
}
@media screen and (max-width: 500px) {
nav.index li:nth-child(3) {
nav.index li:nth-child(4) {
display: none;
}
.home {
@@ -448,3 +448,120 @@ table .unit {
font-size: 0.5em;
}
}
/**** Preview ****/
main.preview {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
margin: 4em 0;
gap: 4em;
}
main.preview section {
background-color: #FFFFFF;
padding: 2em 4em;
border-radius: 0.5em;
box-shadow: 0 0 2em #00000060;
border: 1px solid #C0C0C0;
}
main.preview section h4:not(:first-child) {
margin-top: 2em;
}
main.preview a {
color: var(--main-color);
text-decoration: none;
}
main.preview a:hover,
main.preview a:focus {
text-decoration: underline;
}
@media screen and (max-width: 800px) {
main.preview section {
padding: 2em 1em;
}
}
.window {
position: relative;
box-shadow: 0 0 2em #00000060;
display: flex;
font-size: 1rem;
border-radius: 0.5em;
}
.window img {
border-radius: 0.5em;
}
@media screen and (min-width: 2480px) {
.window:nth-of-type(1) {
font-size: 2rem;
}
.window:nth-of-type(1) * {
width: 2472px;
height: auto;
}
}
@media screen and (max-width: 1240px) {
.window:nth-of-type(1) {
font-size: 0.5rem;
}
.window:nth-of-type(1) * {
width: 618px;
height: auto;
}
}
@media screen and (max-width: 620px) {
.window:nth-of-type(1) {
font-size: 0.25rem;
}
.window:nth-of-type(1) * {
width: 309px;
height: auto;
}
}
@media screen and (min-width: 2280px) {
.window:nth-of-type(2), .window:nth-of-type(3) {
font-size: 2rem;
}
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
width: 2272px;
height: auto;
}
}
@media screen and (max-width: 1140px) {
.window:nth-of-type(2), .window:nth-of-type(3) {
font-size: 0.5rem;
}
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
width: 568px;
height: auto;
}
}
@media screen and (max-width: 570px) {
.window:nth-of-type(2), .window:nth-of-type(3) {
font-size: 0.25rem;
}
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
width: 284px;
height: auto;
}
}
.window canvas {
position: absolute;
left: 0;
top: 0;
}
.window img:not(.selected) {
display: none;
}
+1
View File
@@ -1,3 +1,4 @@
# robots.txt for elwig.at
User-Agent: *
Sitemap: https://elwig.at/sitemap.xml
Disallow: /res/preview/
+10
View File
@@ -10,6 +10,16 @@
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://elwig.at/de/vorschau</loc>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://elwig.at/en/preview</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://elwig.at/files/</loc>
<changefreq>monthly</changefreq>