Module:Water Ritual Liquids: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
mNo edit summary
(fixed orderby so it sorts on liquid, not faction name)
 
(One intermediate revision by the same user not shown)
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 28: Line 31:
fields = h.getFields(),
fields = h.getFields(),
where = '(F._pageNamespace="14" OR F._pageNamespace="0") AND IsVisible="1"',
where = '(F._pageNamespace="14" OR F._pageNamespace="0") AND IsVisible="1"',
orderBy = 'F._pageName ASC',
orderBy = 'WaterRitualLiquid ASC',
oneToMany = {
oneToMany = {
fields = { 'CONCAT("[[:", _pageName, "|", PlainName, "]]")=Factions', 'WaterRitualLiquid' },
fields = { 'CONCAT("[[:", _pageName, "|", PlainName, "]]")=Factions', 'WaterRitualLiquid' },
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



Latest revision as of 20:37, 7 January 2020

LiquidFactions
bloodcannibals • Children of Mamon • Glow-Wights
cloning draughtGirsh
oilrobots
slimemollusks
warm statichighly entropic beings
waterapes • arachnids • baetyls • bears • birds • cats • crabs • Cult of the Coiled Lamb • Daughters of Exile • dogs • equines • Fellowship of Wardens • fish • flowers • fungi • goatfolk • hindren of Bey Lah • Issachari tribe • Merchants' Guild • mysterious strangers • newly sentient beings • oozes • roots • Seekers of the Sightless Way • snapjaws • swine • villagers of Ezra • villagers of Joppa • winged mammals • worms • trees • antelopes • Sultan cult • hermits • cragmensch • dromad merchants • unshelled reptiles • svardym • Farmers' Guild • villagers of Kyakukya • tortoises • frogs • grazing hedonists • mopango • denizens of the Yd Freehold • water barons • baboons • vines • succulents • pariahs • Chavvah • Mechanimists • Barathrumites • Gyre wights • Naphtaali tribe • trolls • Consortium of Phyta • urchins • insects • Putus Templar

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 = 'WaterRitualLiquid 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