feat(kæde): manglende led forklares i Kræver handling, fanen og som besked
problemText giver årsag og råd for køb/flaskehals/kredsløb og 'slukket af dig' (userOff-kopi på ADChain.last); modellens problemer får need. Fanen Kæder viser teksten som rød tekstrække under varen (foldet ud). Kræver handling får én rød post pr. kæde (højst 2, score 3500+alvor mellem rød tom og rød fuld); klik åbner fanen med kæden foldet ud. Engangsbesked pr. nyt led (rod|vare|art) kun fra tick, ikke i opstartsfristen eller på delvise data/ufærdig markscanning. Manualer og CHANGELOG opdateret.
This commit is contained in:
@@ -62,8 +62,8 @@ end
|
||||
|
||||
-- entry fra ADStorageStats.attentionList -> advice ("open"|"flow"|"produce"|"none"), info
|
||||
function SmartPickupFrame:attentionAdvice(entry)
|
||||
-- kæde-forslag har ingen vare (stat): klik fører til fanen Kæder
|
||||
if entry ~= nil and entry.kind == "chainSuggest" then return "chain", nil end
|
||||
-- kæde-forslag og manglende led har ingen vare (stat): klik fører til fanen Kæder
|
||||
if entry ~= nil and (entry.kind == "chainSuggest" or entry.kind == "chainProblem") then return "chain", nil end
|
||||
if entry ~= nil and entry.kind == "sell" and entry.stat ~= nil then return sellAdviceFor(entry.stat) end
|
||||
if entry == nil or entry.kind ~= "empty" or entry.stat == nil then return "none", nil end
|
||||
local stat = entry.stat
|
||||
@@ -94,7 +94,12 @@ end
|
||||
|
||||
function SmartPickupFrame:onAttentionClick(entry)
|
||||
self:safe(function(frame)
|
||||
if entry ~= nil and entry.kind == "chainSuggest" then
|
||||
if entry ~= nil and (entry.kind == "chainSuggest" or entry.kind == "chainProblem") then
|
||||
-- manglende led: kæden foldes ud, så problemteksten står under den røde linje
|
||||
if entry.kind == "chainProblem" and entry.rootKey ~= nil then
|
||||
frame.chainExpanded = frame.chainExpanded or {}
|
||||
frame.chainExpanded[entry.rootKey] = true
|
||||
end
|
||||
frame:switchTab(SmartPickupFrame.TAB_CHAINS)
|
||||
return
|
||||
end
|
||||
|
||||
@@ -87,6 +87,17 @@ function SmartPickupFrame:addChainRow(entry)
|
||||
return row
|
||||
end
|
||||
|
||||
-- Manglende led: problemteksten som (ombrudt) tekstrække i rød under varelinjen.
|
||||
function SmartPickupFrame:addChainProblemRow(entry)
|
||||
local unpackFn = table.unpack or unpack
|
||||
local color = ADFlowView.LEVEL_COLORS ~= nil and ADFlowView.LEVEL_COLORS[entry.level] or nil
|
||||
for _, line in ipairs(ADFlowView.wrapText(entry.text, SmartPickupFrame.TEXT_ROW_CHARS)) do
|
||||
local title = self:addRow(self.textPrefab, {kind = "text"}):getDescendantByName("title")
|
||||
title:setText(line)
|
||||
if color ~= nil and title.setTextColor ~= nil then title:setTextColor(unpackFn(color)) end
|
||||
end
|
||||
end
|
||||
|
||||
function SmartPickupFrame:fillChainRows(adEnv)
|
||||
local i18n = self.i18n
|
||||
local last = self:chainLast(adEnv, false)
|
||||
@@ -95,6 +106,8 @@ function SmartPickupFrame:fillChainRows(adEnv)
|
||||
for _, entry in ipairs(rows) do
|
||||
if entry.kind == "info" or entry.kind == "empty" then
|
||||
self:addTextRow(entry.text)
|
||||
elseif entry.kind == "problem" then
|
||||
self:addChainProblemRow(entry)
|
||||
else
|
||||
self:addChainRow(entry)
|
||||
end
|
||||
|
||||
@@ -183,7 +183,8 @@ function SmartPickupFrame:addKpiRow(stats)
|
||||
return row
|
||||
end
|
||||
|
||||
-- Varepunkterne + ét samlet punkt for kædens afgrødeforslag (ADChain.last; ingen evaluering her), samme loft MAX_ATTENTION.
|
||||
-- Varepunkterne + kædens punkter (røde manglende led, højst 2, og ét samlet punkt for afgrødeforslag; ADChain.last,
|
||||
-- ingen evaluering her), samme loft MAX_ATTENTION.
|
||||
function SmartPickupFrame:attentionFor(stats)
|
||||
local attention = ADStorageStats.attentionList(stats, SmartPickupFrame.MAX_ATTENTION)
|
||||
if ADChain == nil or ADChain.last == nil then return attention end
|
||||
@@ -195,6 +196,11 @@ function SmartPickupFrame:alertText(entry)
|
||||
if entry.kind == "chainSuggest" then
|
||||
return string.format(i18n:getText("spu_attention_chainSuggests"), entry.count or 0)
|
||||
end
|
||||
if entry.kind == "chainProblem" then
|
||||
local text = string.format(i18n:getText("spu_attention_chainProblem"), tostring(entry.rootTitle), tostring(entry.itemsText))
|
||||
if (entry.more or 0) > 0 then text = text .. string.format(" (+%d)", entry.more) end
|
||||
return text
|
||||
end
|
||||
if entry.kind == "empty" then
|
||||
return string.format(i18n:getText("spu_alert_empty"), stat.title, self:formatDays(stat.days), fc(stat.farmLevel or 0), fc(math.abs(stat.net or 0)))
|
||||
elseif entry.kind == "full" then
|
||||
|
||||
Reference in New Issue
Block a user