Module:Task

From Bodhicitta
Revision as of 08:43, 7 August 2024 by Jeremi (talk | contribs) ((by SublimeText.Mediawiker))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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