Module:Task
From Bodhicitta
Documentation for this module may be created at Module:Task/doc
local p = {}
function p.main(frame)
local username = ''
if frame.args.user then
username = '[[CompletedBy::User:' .. frame.args.user .. ']]'
end
local output = '<table class="smwtable-clean w-100 border th-top-left sortable"><tr><th></th><th>Page</th><th>Task</th><th>Champ</th><th>Actions</th></tr>'
local incompleteTasksQr = mw.smw.ask( '[[SubobjectType::Incomplete Tasks]]' .. username .. '|?#-=Subobject|?TaskType|?TaskNum|?TaskLabel|?PageReviewed#|?Completed|?CompletedBy|?CompletedOn|sort=Completed,PageReviewed,TaskType,TaskNum|order=asc,asc,asc,asc' )
if incompleteTasksQr then
for _,task in ipairs(incompleteTasksQr) do
local checkIfCompleted = mw.smw.ask( '[[Tasks/' .. task.PageReviewed .. '/' .. task.TaskType .. '-' .. task.TaskNum .. '-' .. task.TaskLabel .. ']][[Completed::true]]' )
local prevTaskNum = task.TaskNum - 1
local checkPrevTaskComplete = mw.smw.ask( '[[PageReviewed::' .. task.PageReviewed .. ']][[TaskType::' .. task.TaskType .. ']][[TaskNum::' .. prevTaskNum .. ']][[Completed::true]]' )
if checkIfCompleted then
output = output
elseif (task.TaskNum == 1 and task.Completed == false) or checkPrevTaskComplete then
output = output .. frame:expandTemplate{ title = 'TaskRow', args = { task.Subobject, task.TaskType, task.TaskNum, task.TaskLabel, task.PageReviewed, task.Completed, task.CompletedBy, task.CompletedOn, '' } }
end
end
end
local completedTasksQr = mw.smw.ask( '[[SubobjectType::Completed Tasks]]' .. username .. '|?#-=wikipage|?TaskType|?TaskNum|?TaskLabel|?PageReviewed#|?Completed|?CompletedBy|?CompletedOn|sort=Completed,PageReviewed,TaskType,TaskNum|order=asc,asc,asc,asc' )
if completedTasksQr then
for _,task in ipairs(completedTasksQr) do
output = output .. frame:expandTemplate{ title = 'TaskRow', args = { task.wikipage, task.TaskType, task.TaskNum, task.TaskLabel, task.PageReviewed, task.Completed, task.CompletedBy, task.CompletedOn, 'Complete' } }
end
end
output = output .. '</table>'
return output
end
return p