Dagsplan: flytt/navn/deling + plan-badge, kategorier, feltmodus

Dagsplan kan navngis og flyttes til annen dato (slår sammen uten datatap).
Delbar som hovedregel (shared-flagg default true) med toggle for privat;
andres delte planer kan ses skrivebeskyttet via "Plan for"-velger.
getPlanFor håndhever tilgang. Per-oppgave plan-badge (dag + person) via
planIndex filtrert per viewer.

Egendefinerte kategorier (categories.json) i tillegg til de 12 innebygde;
dynamisk validering, deles via WS, addes fra kategori-nedtrekket.

Feltmodus (body.field-mode): større berøringsmål for mobil, auto på <640px.

plans.json migreres array -> {name,items,shared} ved oppstart (bakoverkompat).
26 integrasjonstester (6 nye), alle grønne. README + CLAUDE.md oppdatert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jon Vanvik 2026-06-15 13:59:19 +02:00
parent be166034de
commit bdeb6254b9
8 changed files with 724 additions and 147 deletions

View file

@ -18,6 +18,7 @@
<div class="header-actions">
<span class="online-row" id="online-row" title="Pålogget nå"></span>
<span class="user-chip" id="user-chip" title="Pålogget bruker"></span>
<button id="fieldBtn" title="Feltmodus — større knapper for mobil (f)">📱 Felt</button>
<button id="activityBtn" title="Aktivitetslogg (a)">☰ Aktivitet</button>
<button id="exportBtn" title="Eksporter JSON"></button>
<button id="importBtn" title="Importer JSON (erstatter alt)"></button>
@ -135,7 +136,7 @@
<section class="board" id="board" style="display:none"></section>
<section class="planner" id="planner" style="display:none">
<div class="plan-col">
<div class="plan-col" id="plan-available-col">
<div class="plan-col-head">
<h3>Tilgjengelige oppgaver <span class="col-meta" id="plan-avail-count"></span></h3>
<span class="plan-col-hint">klikk + for å planlegge</span>
@ -143,13 +144,28 @@
<div class="plan-col-body" id="plan-available-body"></div>
</div>
<div class="plan-col plan-today">
<div class="plan-col-head">
<div class="plan-today-head">
<div class="plan-date-row">
<h3>Dagsplan</h3>
<span class="plan-cal">📅</span>
<input type="date" id="plan-date" title="Velg dag å planlegge">
<input type="text" id="plan-name" class="plan-name-input" maxlength="80" autocomplete="off"
placeholder="Navngi planen (valgfritt), f.eks. «Vedlikeholdsvindu DC-OSL» …">
</div>
<div class="plan-controls">
<div class="plan-owner-row">
<label for="plan-view-user">Plan for</label>
<select id="plan-view-user" title="Se en annens dagsplan (skrivebeskyttet)"></select>
<label class="plan-share" title="Når på: andre kan se denne dagsplanen"><input type="checkbox" id="plan-shared"> Synlig for alle</label>
</div>
<span class="col-meta" id="plan-capacity"></span>
<div class="plan-move" id="plan-move">
<label for="plan-move-date">Flytt til</label>
<input type="date" id="plan-move-date" title="Måldato for hele planen">
<button id="plan-move-btn" title="Flytt hele planen til valgt dato">⇄ Flytt</button>
</div>
</div>
<span class="col-meta" id="plan-capacity"></span>
</div>
<div class="plan-readonly" id="plan-readonly"></div>
<div class="plan-col-body" id="plan-today-body"></div>
</div>
</section>