diff --git a/changelog.json b/changelog.json index 9edc8fe..8437bc0 100644 --- a/changelog.json +++ b/changelog.json @@ -4,11 +4,13 @@ "date": "", "en": [ "Bulk edit can now set mode, submode and RST. They were excluded as per-QSO fields, which missed the point: bulk edit is for repairing a batch — an import that mapped every contact to SSB, an ADIF with no mode at all — and refusing meant editing a hundred rows one at a time. Setting the mode clears the submode, since one left over from the old mode contradicts the new one. Band stays with frequency, which already sets the two together.", - "Web publishing: the Distance column is no longer empty. Nothing computes a distance when a QSO is logged — the stored field is only ever filled by an ADIF import that carried one — so it is worked out from the two locators instead, rounded to whole kilometres." + "Web publishing: the Distance column is no longer empty. Nothing computes a distance when a QSO is logged — the stored field is only ever filled by an ADIF import that carried one — so it is worked out from the two locators instead, rounded to whole kilometres.", + "Web publishing: the page now widens to fit the table. It was capped at a comfortable reading width, so with more than about eight columns the rest sat behind a scrollbar on a screen wide enough to show them all — and Windows hides that scrollbar until something moves, which made a table that scrolls look like a table missing columns. Columns also take the width their contents need instead of being squeezed to fit first." ], "fr": [ "L édition groupée sait enfin régler le mode, le sous-mode et le RST. Ils étaient exclus comme champs propres à chaque QSO, ce qui manquait l essentiel : l édition groupée sert à RÉPARER un lot — un import qui a tout mis en SSB, un ADIF sans aucun mode — et refuser obligeait à corriger cent lignes une par une. Régler le mode efface le sous-mode, celui de l ancien mode contredisant le nouveau. La bande reste avec la fréquence, qui pose déjà les deux ensemble.", - "Publication web : la colonne Distance n est plus vide. Rien ne calcule de distance à l enregistrement d un QSO — le champ stocké n est rempli que par un ADIF importé qui en portait une — elle est donc déduite des deux locators, arrondie au kilomètre." + "Publication web : la colonne Distance n est plus vide. Rien ne calcule de distance à l enregistrement d un QSO — le champ stocké n est rempli que par un ADIF importé qui en portait une — elle est donc déduite des deux locators, arrondie au kilomètre.", + "Publication web : la page s élargit désormais à la taille du tableau. Elle était bridée à une largeur de lecture confortable, donc au-delà de huit colonnes environ le reste passait derrière une barre de défilement sur un écran assez large pour tout montrer — et Windows masque cette barre tant que rien ne bouge, si bien qu un tableau qui défile ressemblait à un tableau amputé. Les colonnes prennent aussi la largeur qu il leur faut au lieu d être comprimées d abord." ] }, { diff --git a/internal/webpub/webpub.go b/internal/webpub/webpub.go index 9052f01..8dada36 100644 --- a/internal/webpub/webpub.go +++ b/internal/webpub/webpub.go @@ -401,11 +401,25 @@ func renderHTML(cfg Config, cols []Column, qsos []qso.QSO, stationCall string) [ *{box-sizing:border-box} body{margin:0;padding:1.5rem 1rem;background:var(--bg);color:var(--fg); font:14px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif} -.wrap{max-width:1100px;margin:0 auto} +/* The page grows with its table instead of being capped at a comfortable + READING width. 1100px suits eight columns and hides the rest behind a + scrollbar on a screen wide enough to show them all — which is how this was + reported. max-content lets a wide table use the window; min-width keeps a + narrow one from collapsing to nothing on a large display. */ +.wrap{max-width:max-content;min-width:min(1100px,100%);margin:0 auto} h1{margin:0 0 .25rem;font-size:1.35rem} .meta{margin:0 0 1rem;color:var(--mut);font-size:.8rem} -.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:8px} -table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums} +/* A visible scrollbar. Windows hides overlay scrollbars until something moves, + so a table that scrolls looks exactly like a table that is missing columns. */ +.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:8px; + scrollbar-width:thin;scrollbar-color:var(--line) transparent} +.scroll::-webkit-scrollbar{height:10px} +.scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px} +/* width:auto, not 100%: columns take the width their contents need. With + width:100% the browser squeezes them to fit the container first and only then + overflows, so a callsign could end up wrapped while empty space sat further + along the row. min-width keeps a two-column table filling the frame. */ +table{border-collapse:collapse;width:auto;min-width:100%;font-variant-numeric:tabular-nums} th,td{padding:.45rem .6rem;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap} th{position:sticky;top:0;background:var(--head);font-size:.72rem;letter-spacing:.05em; text-transform:uppercase;color:var(--mut);cursor:pointer;user-select:none}