Fix clipboard paste on PC, round price per litre to 2 decimals
The "paste from clipboard" button could never work on a desktop: clipboard.read() only ever exposes text, HTML and images by spec, so a file copied in Explorer is not offered through it - and the dialog then wrongly blamed the file for not being a PDF. It is now hidden on pointer-coarse devices only, where it does work; on a PC the drop zone names Strg+V, which is the path that carries the actual file. Detection also relied solely on the MIME type, but a file copied or dragged from Explorer can arrive with an empty type and was rejected - istPdf() now falls back to the extension. Price per litre now shows 2 decimals everywhere (list, receipt detail, both entry forms, CSV) instead of 3. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1169,6 +1169,40 @@ wraps the web app for iPhone; a PWA home-screen install is the accepted intermed
|
||||
drop → zone highlights (`darueber`), dialog closes, service called with the right filename and
|
||||
base64 payload; paste → same; a dropped PNG → "Das war kein PDF." and no service call; Escape →
|
||||
closes. Synced to `installationspaket/`.
|
||||
**Nachbesserung am selben Tag, nach Fehlermeldung des Nutzers** ("copy paste from pc brings
|
||||
error no pdf but it is the latest bill") — zwei echte Fehler, beide bestätigt:
|
||||
(1) `navigator.clipboard.read()` (der "Aus Zwischenablage einfügen"-Knopf) gibt laut
|
||||
Spezifikation **nur Text, HTML und Bilder** heraus. Eine im Explorer/Finder kopierte PDF-Datei
|
||||
taucht dort grundsätzlich nicht auf - der Knopf konnte am Rechner also gar nicht funktionieren
|
||||
und behauptete dann fälschlich, es liege kein PDF vor. Der Weg, der dort funktioniert, ist
|
||||
Strg+V: das `paste`-Ereignis trägt die Datei in `clipboardData.files`. Die Meldung nennt jetzt
|
||||
genau das, statt die Datei zu beschuldigen; die Ablagefläche sagt es von vornherein
|
||||
("oder mit Strg+V einfügen", per `tastenkuerzelEinfuegen()` auf Mac Cmd+V).
|
||||
(2) Die Erkennung hing allein am MIME-Typ (`type === "application/pdf"`) - eine aus dem
|
||||
Explorer kopierte oder gezogene Datei kommt je nach Browser und Quelle aber mit **leerem**
|
||||
`type` an und wurde dadurch abgelehnt. Neue Hilfsfunktion `istPdf()` prüft zusätzlich die
|
||||
Dateiendung; live nachgestellt mit genau diesem Fall (`new File([...], "Tankbeleg_August.pdf",
|
||||
{})`, `type === ""`) - vorher abgelehnt, jetzt korrekt hochgeladen.
|
||||
(3) Auf Rückfrage des Nutzers ("why is it that way? computer has copy paste function") noch
|
||||
einen Schritt weiter: Der Einfügen-Knopf wird am Rechner jetzt **gar nicht mehr angeboten**
|
||||
(`zwischenablageKnopfSinnvoll()`, Prüfung auf `(pointer: coarse)`), weil er dort prinzipiell
|
||||
nicht funktionieren kann - ein Knopf, der zwangsläufig in eine Fehlermeldung läuft, ist
|
||||
schlechter als keiner. "Datei auswählen" wird dort zur primären Aktion; auf dem Telefon bleibt
|
||||
alles wie zuvor. Der Unterschied dahinter, kurz: Strg+V ist eine bewusste Nutzergeste an die
|
||||
Seite, deshalb bekommt die Seite den vollen Inhalt inklusive Dateien - `clipboard.read()` ist
|
||||
die Seite, die von sich aus die Zwischenablage ausliest, und das wird aus Datenschutzgründen
|
||||
stark eingeschränkt (sonst könnte jede Seite still mitlesen, was zuletzt kopiert wurde).
|
||||
Live geprüft: Desktop zeigt nur noch "Datei auswählen [primaer]"/"Abbrechen", Mobil (375px,
|
||||
`pointer: coarse`) weiterhin alle drei Knöpfe.
|
||||
- [x] Preis je Liter überall auf 2 Nachkommastellen (2026-08-17, Nutzerwunsch: "€/l for gas is
|
||||
common to be displayed as x,xx €/l") — alle sieben Stellen von `de(..., 3)` auf `de(..., 2)`
|
||||
umgestellt: Jahres- und Monatsschnitt in der Tankliste, Zeilenwert je Tankvorgang, "Preis je
|
||||
Liter" im Einzelbeleg, die Live-Vorschau in beiden Tankformularen (statisch und im
|
||||
`data-tankpreisfeld`-Handler) sowie die CSV-Spalte "€/l". Im CSV kein Informationsverlust: der
|
||||
Wert ist aus den ebenfalls exportierten Spalten Liter und Kosten jederzeit neu berechenbar.
|
||||
`companion-app` (Nachfolger-App) brauchte keine Änderung - deren `eur()` rundet ohnehin schon
|
||||
auf 2 Stellen. Live geprüft: keine `de(..., 3)`-Aufrufe mehr in der Datei, Liste und
|
||||
Einzelbeleg zeigen "2,07 €/l", "1,99 €/l" usw.
|
||||
- [ ] Fix remaining documentation drift (statistics claim, README gaps, obsolete TODO comment) —
|
||||
text-only changes; INSTALL.md's WLAN/TommiG1 drift and stale variable names were fixed
|
||||
2026-08-12 (see section B); `DESIGN_REVIEW_2026-08-13.md` and `REVIEW_main_2026-08-13.md`
|
||||
|
||||
Reference in New Issue
Block a user