fix(kæde): højst 3 beskeder og samlede poster i Kræver handling
notifyProblems sender højst 3 beskeder pr. tick og samler resten i én
("+N manglende led — se fanen Kæder"). Alle kædeproblemer står i én rød post
("Kæder: N manglende led", scoret under rød fuld; klik folder kæderne ud) og
slukkede nødvendige fabrikker i højst én post ("Slukket men nødvendig: X +k").
This commit is contained in:
@@ -391,6 +391,8 @@ end
|
||||
|
||||
-- Engangsbesked pr. nyt manglende led (kun fra tick). Ikke i opstartsfristen og ikke mens gården er læst delvist
|
||||
-- eller markscanningen kører (ellers falske alarmer lige efter indlæsning) — så huskes intet, og det meldes senere.
|
||||
-- Højst MAX_PROBLEM_NOTES beskeder pr. tick; resten samles i én besked (alle logges stadig).
|
||||
ADChain.MAX_PROBLEM_NOTES = 3
|
||||
function ADChain.notifyProblems(last)
|
||||
if last == nil or ADChain.now < ADChain.STARTUP_GRACE_MS then return 0 end
|
||||
if last.fieldsIncomplete or (last.data ~= nil and last.data.partial) then return 0 end
|
||||
@@ -403,11 +405,16 @@ function ADChain.notifyProblems(last)
|
||||
for _, root in ipairs(last.chain ~= nil and last.chain.roots or {}) do
|
||||
rootNames[root.key] = tostring((last.titles or {})[root.name] or root.name)
|
||||
end
|
||||
for _, problem in ipairs(fresh) do
|
||||
for index, problem in ipairs(fresh) do
|
||||
-- kædens navn foran, så to kæder der mangler samme vare kan skelnes
|
||||
local text = tostring(rootNames[problem.rootKey] or problem.rootKey) .. ": " .. ADChainView.problemText(problem, last, textOf, nil, fmt)
|
||||
Logging.info(ADChain.LOG_PREFIX .. "manglende led: %s", text)
|
||||
ADFieldJobs.notify(text, true)
|
||||
if index <= ADChain.MAX_PROBLEM_NOTES then ADFieldJobs.notify(text, true) end
|
||||
end
|
||||
-- resten samles i én besked (fx mange fermenteringssiloer efter indlæsning); alle står i fanen Kæder
|
||||
if #fresh > ADChain.MAX_PROBLEM_NOTES then
|
||||
local ok, text = pcall(string.format, textOf("spu_chain_notifyMore"), #fresh - ADChain.MAX_PROBLEM_NOTES)
|
||||
ADFieldJobs.notify(ok and text or ("+" .. tostring(#fresh - ADChain.MAX_PROBLEM_NOTES)), true)
|
||||
end
|
||||
return #fresh
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user