Module:Water Ritual Liquids: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
(fixed liquid favilink)
Line 5: Line 5:
local util_table = require('Module:Table Utility')
local util_table = require('Module:Table Utility')
local util_text = require('Module:Text Utility')
local util_text = require('Module:Text Utility')
local favilink = require('Module:Favilink')


local COLUMNS = { 'Liquid', 'Factions' }
local COLUMNS = { 'Liquid', 'Factions' }
Line 11: Line 12:


local p = {}
local p = {}
function p.main(frame)
function p.main(frame)
--local args = util_args.merge(true)
 
--h.castArgs(args)
frame=mw.getCurrentFrame()
       
local data = h.makeAndRunQuery(nil)
local data = h.makeAndRunQuery(nil)
         h.formatRows(data)
         h.formatRows(data)
Line 39: Line 42:
function h.getFields()
function h.getFields()
return {
return {
'CONCAT("{{favilink|", WaterRitualLiquid,"}}")=Liquid'
'WaterRitualLiquid=Liquid'
}
}
end
end
Line 49: Line 52:
function h.formatOneRow(row)
function h.formatOneRow(row)
row.Factions = util_table.concat(row.Factions, ' • ')
row.Factions = util_table.concat(row.Factions, ' • ')
          
         row.Liquid = favilink.modulefavilink(row.Liquid)
end
end



Revision as of 20:34, 7 January 2020

local util_args = require('Module:Args Utility')
local util_cargo = require('Module:Cargo Utility')
local util_map = require('Module:Map Utility')
local util_html = require('Module:HTML Utility')
local util_table = require('Module:Table Utility')
local util_text = require('Module:Text Utility')
local favilink = require('Module:Favilink')

local COLUMNS = { 'Liquid', 'Factions' }

local h = {}

local p = {}

function p.main(frame)

frame=mw.getCurrentFrame()
        
	local data = h.makeAndRunQuery(nil)
        h.formatRows(data)
	return h.makeOutput(data)
end

function h.makeAndRunQuery(args)
	return util_cargo.queryAndCast(h.makeQuery(args))
end

function h.makeQuery(args)
	local query = {
		tables = { 'Factions=F' },
		fields = h.getFields(),
		where = '(F._pageNamespace="14" OR F._pageNamespace="0") AND IsVisible="1"',
		orderBy = 'F._pageName ASC',
		oneToMany = {
			fields = { 'CONCAT("[[:", _pageName, "|", PlainName, "]]")=Factions', 'WaterRitualLiquid' },
			groupBy = { 'WaterRitualLiquid' },
		},
	}
	return query
end

function h.getFields()
	return {
		'WaterRitualLiquid=Liquid'
	}
end

function h.formatRows(data)
	util_map.rowsInPlace(data, h.formatOneRow)
end

function h.formatOneRow(row)
	row.Factions = util_table.concat(row.Factions, ' • ')
        row.Liquid = favilink.modulefavilink(row.Liquid)
end

function h.makeOutput(data)
	local output = mw.html.create()
	local tbl = output:tag('table')
		:addClass('wikitable')
		:addClass('sortable')
	util_html.printHeader(tbl, COLUMNS)
	util_html.printRowsByList(tbl, data, COLUMNS)
	return output
end

return p