diff --git a/netops-todo-node/public/app.js b/netops-todo-node/public/app.js
index 1884a9d..5bfc3a5 100644
--- a/netops-todo-node/public/app.js
+++ b/netops-todo-node/public/app.js
@@ -77,16 +77,18 @@ const $ = id => document.getElementById(id);
// ---------- Persistens av UI-valg ----------
function loadPrefs() {
- try {
- const p = JSON.parse(localStorage.getItem('netops.prefs') || '{}');
- if (p.filters) Object.assign(state.filters, p.filters);
- if (p.sort) state.sort = p.sort;
- if (VIEWS.includes(p.view)) state.view = p.view;
- if (typeof p.fieldMode === 'boolean') state.fieldMode = p.fieldMode;
- } catch { /* ignorer korrupt localStorage */ }
- // Slå på feltmodus automatisk på små skjermer hvis brukeren ikke har valgt selv.
+ let p = {};
+ try { p = JSON.parse(localStorage.getItem('netops.prefs') || '{}') || {}; }
+ catch { /* ignorer korrupt localStorage */ }
+ if (p.filters) Object.assign(state.filters, p.filters);
+ if (p.sort) state.sort = p.sort;
+ if (VIEWS.includes(p.view)) state.view = p.view;
+ if (typeof p.fieldMode === 'boolean') state.fieldMode = p.fieldMode;
+ // Slå på feltmodus automatisk på små skjermer hvis brukeren ikke har valgt selv,
+ // og land på dagsplanen hvis det er første besøk (ingen lagret visning).
if (localStorage.getItem('netops.fieldModeSet') !== '1' && window.innerWidth < 640) {
state.fieldMode = true;
+ if (!VIEWS.includes(p.view)) state.view = 'plan';
}
}
function savePrefs() {
@@ -873,6 +875,7 @@ function renderPlanItem(t, i, own = true) {
${i + 1}
${escapeHtml(t.title)}
+ ${t.location ? `
📍 ${escapeHtml(t.location)}
` : ''}
${t.priority}
${catBadge(t)}
@@ -1367,9 +1370,12 @@ function applyFieldMode() {
function toggleFieldMode() {
state.fieldMode = !state.fieldMode;
localStorage.setItem('netops.fieldModeSet', '1'); // brukeren har valgt selv
+ // I felt vil man ha dagsplanen først; hopp dit når feltmodus slås på.
+ if (state.fieldMode) state.view = 'plan';
savePrefs();
applyFieldMode();
- toast(state.fieldMode ? 'Feltmodus på' : 'Feltmodus av');
+ renderView();
+ toast(state.fieldMode ? 'Feltmodus på — viser dagsplan' : 'Feltmodus av');
}
// ---------- Navnevalg (cookie-auth) ----------
diff --git a/netops-todo-node/public/style.css b/netops-todo-node/public/style.css
index fdf1564..c7793d4 100644
--- a/netops-todo-node/public/style.css
+++ b/netops-todo-node/public/style.css
@@ -371,6 +371,7 @@ tbody tr.status-done .task-title { text-decoration: line-through; }
.plan-item-main { flex: 1; min-width: 0; }
.plan-item-title { font-size: 13px; font-weight: 500; cursor: pointer; }
.plan-item-title:hover { color: var(--accent); }
+.plan-item-loc { font-family: var(--mono); font-size: 12px; color: var(--accent); margin-top: 2px; }
.plan-item-meta { display: flex; gap: 8px; align-items: center; margin-top: 3px;
font-size: 11px; font-family: var(--mono); color: var(--text-faint); flex-wrap: wrap; }
.plan-item-actions { display: flex; gap: 2px; flex-shrink: 0; }
@@ -453,6 +454,10 @@ body.field-mode input[type="date"] { min-height: 44px; font-size: 15px; }
/* Tavle og planner i én kolonne for tommelvennlig scrolling */
body.field-mode .board { grid-template-columns: 1fr; }
body.field-mode .planner { grid-template-columns: 1fr; }
+/* I felt vil man ha dagsplanen øverst, backlogen under */
+body.field-mode .plan-today { order: -1; }
+body.field-mode .plan-item-loc { font-size: 14px; }
+body.field-mode .plan-item-title { font-size: 15px; }
body.field-mode .card { padding: 14px; }
body.field-mode .card-title { font-size: 15px; }
body.field-mode .avail-row, body.field-mode .plan-item { padding: 12px; }