feat(marker): fanen Marker for alle markarter — plan, maskiner pr. trin, aflæsningsvogne, efter høst, såning, pleje, jordtilstand, nye roller i markflåden

This commit is contained in:
2026-09-26 00:01:56 +02:00
parent 969db0a699
commit 65986b1793
6 changed files with 323 additions and 76 deletions
+22 -15
View File
@@ -1,32 +1,39 @@
-- AD Field View
-- Rene regler for fanen Marker: hvilke marker vises (slåafgrøder som standard), rækkefølge og
-- statusord. GUI'et oversætter nøglerne.
-- Rene regler for fanen Marker: rækkefølge, statusord, planens tekst og jordtilstand. GUI'et oversætter
-- nøglerne.
ADFieldView = {}
function ADFieldView.rows(infos, fieldsById, showAll)
-- Alle gårdens marker (slåafgrøder, høstafgrøder og bare), sorteret efter marknummer.
function ADFieldView.rows(infos, fieldsById)
local rows = {}
for _, info in ipairs(infos or {}) do
if showAll or info.mowable then
table.insert(rows, {info = info, field = fieldsById[info.id] or ADFieldModel.newField(info.id)})
end
table.insert(rows, {info = info, field = fieldsById[info.id] or ADFieldModel.newField(info.id)})
end
table.sort(rows, function(a, b) return a.info.id < b.info.id end)
return rows
end
function ADFieldView.hiddenCount(infos, showAll)
if showAll then return 0 end
local hidden = 0
for _, info in ipairs(infos or {}) do
if not info.mowable then hidden = hidden + 1 end
end
return hidden
end
function ADFieldView.statusKey(field, info)
if info.markerId == nil then
return "spu_field_noMarker"
end
return "spu_field_stage_" .. tostring(field.stage)
end
-- Planens tekstnøgle ud fra markens art: ensilage/hø for slåafgrøder, høst, eller klargøring (bar mark).
function ADFieldView.planKey(plan, kind)
if kind == "bare" then return "spu_field_plan_prep" end
return "spu_field_plan_" .. ADFieldModel.product(plan, kind)
end
-- Hvad jorden trænger til, som korte nøgler i fast rækkefølge: kalk, pløj, gødning, ukrudt.
function ADFieldView.soilParts(info)
local parts = {}
local needs = info.needs or {}
if needs.lime then table.insert(parts, "lime") end
if needs.plow then table.insert(parts, "plow") end
if info.fert ~= nil and info.fertMax ~= nil and info.fert < info.fertMax then table.insert(parts, "fert") end
if (info.weed or 0) >= ADFieldModel.WEED_MIN then table.insert(parts, "weed") end
return parts
end