Difference between revisions of "Module:Reports"
From cpt
(Created page with "local p = {} function p.cleanse(frame) local s = frame.args[1] s = string.gsub( s, '{', '{' ) s = string.gsub( s, '}', '}' ) s = string.gsub( s, '%[', '[' )...") |
No edit summary |
||
Line 28: | Line 28: | ||
end | end | ||
function p.Workboard(frame) | |||
local s = '' | |||
local epic = frame.args[1] | |||
local result = mw.smw.getQueryResult( | |||
'[[Has subobject::<q>[[Project::Core Platform Team]][[Column::' .. | |||
epic .. ']]</q>]][[Status::open||stalled]]' .. | |||
'|?CPT Kanban Column|?CPT Backlog Column|link=none|limit=500' ) | |||
if result ~= nil then | |||
local tasks = {} | |||
local columns = {} | |||
local empty = true | |||
for k1,v1 in pairs( result.results ) do | |||
local kanban_column = v1.printouts['CPT Kanban Column'][1] | |||
local backlog_column = v1.printouts['CPT Backlog Column'][1] | |||
empty = false | |||
if kanban_column ~= nil then | |||
tasks[v1.fulltext] = kanban_column | |||
columns[kanban_column] = true | |||
elseif backlog_column ~= nil then | |||
tasks[v1.fulltext] = backlog_column | |||
columns[backlog_column] = true | |||
else | |||
tasks[v1.fulltext] = false | |||
end | |||
end | |||
if ( empty ) then | |||
s = 'No results' | |||
else | |||
local sorted_columns = {} | |||
for k1,v1 in pairs ( columns ) do | |||
table.insert( sorted_columns, k1 ) | |||
end | |||
table.sort( sorted_columns ) | |||
s = s .. '{|\n' | |||
for k1,v1 in pairs( sorted_columns ) do | |||
s = s .. '!' .. v1 .. '\n' | |||
end | |||
s = s .. '!Missing Column\n' | |||
s = s .. '|-\n' | |||
for k1,v1 in pairs( sorted_columns ) do | |||
s = s .. '|\n' | |||
for k2,v2 in pairs ( tasks ) do | |||
if v1 == v2 then | |||
s = s .. '*[[' .. k2 .. ']]\n' | |||
end | |||
end | |||
end | |||
s = s .. '|\n' | |||
for k1,v1 in pairs ( tasks ) do | |||
if v1 == false then | |||
s = s .. '*[[' .. k1 .. ']]\n' | |||
end | |||
end | |||
s = s .. '|}' | |||
end | |||
end | |||
return s | |||
end | |||
return p | return p |
Revision as of 23:02, 10 June 2019
Documentation for this module may be created at Module:Reports/doc
local p = {}
function p.cleanse(frame)
local s = frame.args[1]
s = string.gsub( s, '{', '{' )
s = string.gsub( s, '}', '}' )
s = string.gsub( s, '%[', '[' )
s = string.gsub( s, '%]', ']' )
s = string.gsub( s, '|', '|' )
return s
end
function p.cptWorkboardsTableRow(frame)
local s = ''
local link = frame.args[1]
local category = frame.args[2]
local kanban = frame.args[3]
local backlog = frame.args[4]
if ( #category > 0 and ( #kanban == 0 and #backlog == 0 )) or
( #category == 0 and ( #kanban > 0 or ( #backlog > 0 and backlog ~= 'Watching / External' ))) then
s = s .. '\n|' .. link
s = s .. '\n|' .. category
s = s .. '\n|' .. kanban
s = s .. '\n|' .. backlog
s = s .. '\n|-'
end
return s
end
function p.Workboard(frame)
local s = ''
local epic = frame.args[1]
local result = mw.smw.getQueryResult(
'[[Has subobject::<q>[[Project::Core Platform Team]][[Column::' ..
epic .. ']]</q>]][[Status::open||stalled]]' ..
'|?CPT Kanban Column|?CPT Backlog Column|link=none|limit=500' )
if result ~= nil then
local tasks = {}
local columns = {}
local empty = true
for k1,v1 in pairs( result.results ) do
local kanban_column = v1.printouts['CPT Kanban Column'][1]
local backlog_column = v1.printouts['CPT Backlog Column'][1]
empty = false
if kanban_column ~= nil then
tasks[v1.fulltext] = kanban_column
columns[kanban_column] = true
elseif backlog_column ~= nil then
tasks[v1.fulltext] = backlog_column
columns[backlog_column] = true
else
tasks[v1.fulltext] = false
end
end
if ( empty ) then
s = 'No results'
else
local sorted_columns = {}
for k1,v1 in pairs ( columns ) do
table.insert( sorted_columns, k1 )
end
table.sort( sorted_columns )
s = s .. '{|\n'
for k1,v1 in pairs( sorted_columns ) do
s = s .. '!' .. v1 .. '\n'
end
s = s .. '!Missing Column\n'
s = s .. '|-\n'
for k1,v1 in pairs( sorted_columns ) do
s = s .. '|\n'
for k2,v2 in pairs ( tasks ) do
if v1 == v2 then
s = s .. '*[[' .. k2 .. ']]\n'
end
end
end
s = s .. '|\n'
for k1,v1 in pairs ( tasks ) do
if v1 == false then
s = s .. '*[[' .. k1 .. ']]\n'
end
end
s = s .. '|}'
end
end
return s
end
return p