« Module:Roadmap » : différence entre les versions
De Nefald
Autres actions
Annulation des modifications 5246 de Hiob (discussion) Balises : Annulation Révoqué |
Annulation des modifications 5247 de Hiob (discussion) Balise : Annulation |
||
| Ligne 79 : | Ligne 79 : | ||
line = trim(line) | line = trim(line) | ||
if line == "" or line:match("^%-%-") then | if line == "" or line:match("^%-%-") then | ||
-- skip | -- skip | ||
elseif line:match("^@section%s+") then | elseif line:match("^@section%s+") then | ||
local titre = line:match("^@section%s+(.+)$") | local titre = line:match("^@section%s+(.+)$") | ||
| Ligne 153 : | Ligne 153 : | ||
local s = CONFIG.statuts[statut] or CONFIG.statuts.planned | local s = CONFIG.statuts[statut] or CONFIG.statuts.planned | ||
return string.format( | return string.format( | ||
'<span class="roadmap-badge" title="%s">%s</span>', | '<span class="roadmap-badge roadmap-badge-%s" title="%s">%s</span>', | ||
escapeHtml(s.label), s.icon | statut, escapeHtml(s.label), s.icon | ||
) | ) | ||
end | end | ||
| Ligne 217 : | Ligne 217 : | ||
'<div class="roadmap-progress-wrap">' | '<div class="roadmap-progress-wrap">' | ||
.. '<div class="roadmap-progress-label">' | .. '<div class="roadmap-progress-label">' | ||
.. 'Progression : <strong>%d%%</strong> — %d / %d fonctionnalités' | .. 'Progression\194\160: <strong>%d%%</strong> — %d / %d fonctionnalités' | ||
.. '</div>' | .. '</div>' | ||
.. '<div class="roadmap-progress-bar">' | .. '<div class="roadmap-progress-bar">' | ||
| Ligne 234 : | Ligne 234 : | ||
if s then | if s then | ||
table.insert(parts, string.format( | table.insert(parts, string.format( | ||
'<span class="roadmap-legend-item | '<span class="roadmap-legend-item roadmap-%s">' | ||
.. '%s %s</span>', | |||
key, htmlBadge(key), escapeHtml(s.label) | |||
.. '%s | |||
)) | )) | ||
end | end | ||
| Ligne 246 : | Ligne 244 : | ||
local function htmlStats(elements) | local function htmlStats(elements) | ||
local counts = { | local counts = { done = 0, inprogress = 0, planned = 0, idea = 0, cancelled = 0 } | ||
for _, el in ipairs(elements) do | for _, el in ipairs(elements) do | ||
if el.type == "item" and counts[el.statut] then | if el.type == "item" and counts[el.statut] then | ||
| Ligne 253 : | Ligne 250 : | ||
end | end | ||
end | end | ||
local | local order = { | ||
{ key = "done", label = "Terminé" }, | |||
for _, | { key = "inprogress", label = "En cours" }, | ||
if counts[ | { key = "planned", label = "Planifié" }, | ||
{ key = "idea", label = "Idée" }, | |||
{ key = "cancelled", label = "Annulé" }, | |||
} | |||
local parts = { '<div class="roadmap-stats">' } | |||
for _, s in ipairs(order) do | |||
if counts[s.key] > 0 then | |||
table.insert(parts, string.format( | table.insert(parts, string.format( | ||
'< | '<div class="roadmap-stat roadmap-stat-%s">' | ||
.. '<span class="roadmap-stat-count">%d</span>' | .. '<span class="roadmap-stat-count">%d</span>' | ||
.. '<span class="roadmap-stat-label">%s</span>' | .. '<span class="roadmap-stat-label">%s</span>' | ||
.. '</ | .. '</div>', | ||
counts[key], | s.key, counts[s.key], s.label | ||
)) | )) | ||
end | end | ||
end | end | ||
table.insert(parts, '</div>') | |||
return table.concat(parts, "\n") | |||
end | end | ||
| Ligne 288 : | Ligne 291 : | ||
table.insert(html, '<div class="roadmap-header">') | table.insert(html, '<div class="roadmap-header">') | ||
table.insert(html, string.format( | table.insert(html, string.format( | ||
'<div><div class="roadmap-header-title">%s</div>', | '<div class="roadmap-header-content"><div class="roadmap-header-title">%s</div>', | ||
escapeHtml(titre) | escapeHtml(titre) | ||
)) | )) | ||
| Ligne 331 : | Ligne 334 : | ||
-- ------------------------------------------------------------ | -- ------------------------------------------------------------ | ||
-- ITEM INLINE | -- ITEM INLINE | ||
-- ------------------------------------------------------------ | -- ------------------------------------------------------------ | ||