Zum Inhalt springen

Modul:Wahlkreise

aus Wikipedia, der freien Enzyklopädie

Die Dokumentation für dieses Modul kann unter Modul:Wahlkreise/Doku erstellt werden

local p = {}
local getArgs = require('Module:Arguments').getArgs
local cfg = mw.loadData('Modul:Wahlkreise/Liste');

function p.link(frame)
	local args = getArgs(frame)
	local wk = 'Wahlkreis '..args[1]..(args[2] and ' ('..args[2]..')' or '')
	local titel = mw.title.getCurrentTitle().prefixedText
	name = titel == wk and '<span style="font-weight:bold">Wahlkreis '..args[1]..'</span>' or '[['..wk..(args[3] and ('#'..args[3]) or '')..'|Wahlkreis '..args[1]..']]'
	return args[1] and name or ''
end

function p.region(frame)
	local args = getArgs(frame)
	local code = args[1]
	local region = cfg.einheit[code]
	return region[1]
end

function p.tabelle(frame)
	local args = getArgs(frame)
	local root = mw.html.create('table'):addClass('wikitable floatright mw-collapsible mw-collapsed'):css('font-size', '89%'):css('line-height', '1.45em')
	root:tag('tr')
		:tag('th'):wikitext('Wahlkreise &ndash; ' ..(args['k'] or args['z']) ..' &ndash; [['..p.region({args[1]})..']]&nbsp;&nbsp;'):attr('colspan', 3):css('line-height', '2em'):done()
	root:tag('tr')
		:tag('th'):wikitext('Provinz'):attr('colspan', '2'):css('font-size', '90%'):css('line-height', '2em'):done()
		:tag('th'):wikitext('Gemeinden nach Provinzen &#11166; Wahlkreis'):css('font-size', '90%'):css('line-height', '2em'):done()
		
	local prov = {}
	for k, v in pairs(cfg.info) do
		prov[#prov+1] = k
	end

	table.sort(prov)
	for _, value in pairs(prov) do
		local datum = cfg.info[value] or ''
		if args['z'] then zweite = true end
		if mw.ustring.find(value, ';') then
			einheit = mw.ustring.sub(value, 1, ((mw.ustring.find(value, ';') - 1))) else einheit = value end
		local karte = cfg.info[einheit]

		if args[1] == datum[1] and ((args['jahr'] == datum['jahr']) or (not args['jahr'] and not datum['jahr'])) then
			gemeinden1 = (zweite and datum['zw1']) and (datum['zg1'] or 'alle') or ((datum['w1'] and not zweite) and (datum['g1'] or 'alle') or '')
			gemeinden2 = (zweite and datum['zw2']) and (datum['zg2'] or 'alle') or ((datum['w2'] and not zweite) and (datum['g2'] or 'alle') or '')
			gemeinden3 = (zweite and datum['zw3']) and (datum['zg3'] or 'alle') or ((datum['w3'] and not zweite) and (datum['g3'] or 'alle') or '')
			gemeinden4 = (zweite and datum['zw4']) and (datum['zg4'] or 'alle') or ((datum['w4'] and not zweite) and (datum['g4'] or 'alle') or '')
			gemeinden5 = (zweite and datum['zw5']) and (datum['zg5'] or 'alle') or ((datum['w5'] and not zweite) and (datum['g5'] or 'alle') or '')
			gemeinden6 = (zweite and datum['zw6']) and (datum['zg6'] or 'alle') or ((datum['w6'] and not zweite) and (datum['g6'] or 'alle') or '')
			gemeinden7 = (zweite and datum['zw7']) and (datum['zg7'] or 'alle') or ((datum['w7'] and not zweite) and (datum['g7'] or 'alle') or '')
			gemeinden8 = (zweite and datum['zw8']) and (datum['zg8'] or 'alle') or ((datum['w8'] and not zweite) and (datum['g8'] or 'alle') or '')
			gemeinden9 = (zweite and datum['zw9']) and (datum['zg9'] or 'alle') or ((datum['w9'] and not zweite) and (datum['g9'] or 'alle') or '')
			gemeinden10 = (zweite and datum['zw10']) and (datum['zg10'] or 'alle') or ((datum['w10'] and not zweite) and (datum['g10'] or 'alle') or '')
			gemeinden11 = (zweite and datum['zw11']) and (datum['zg11'] or 'alle') or ((datum['w11'] and not zweite) and (datum['g11'] or 'alle') or '')
			
			b1 = (datum['b1'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b1']..'</span>:<br/>' or ''
			b2 = (datum['b2'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b2']..'</span>:<br/>' or ''
			b3 = (datum['b3'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b3']..'</span>:<br/>' or ''
			b4 = (datum['b4'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b4']..'</span>:<br/>' or ''
			b5 = (datum['b5'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b5']..'</span>:<br/>' or ''
			b6 = (datum['b6'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b6']..'</span>:<br/>' or ''
			b7 = (datum['b7'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b7']..'</span>:<br/>' or ''
			b8 = (datum['b8'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b8']..'</span>:<br/>' or ''
			b9 = (datum['b9'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b9']..'</span>:<br/>' or ''
			b10 = (datum['b10'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b10']..'</span>:<br/>' or ''
			b11 = (datum['b11'] and not zweite) and '↳ <span style="font-style:italic">'..datum['b11']..'</span>:<br/>' or ''
			
			element11 = ((zweite and datum['zw11']) or (datum['w11'] and not zweite)) and '<br/>'..b11..gemeinden11..' &#11166; '..(zweite and p.link({datum['zw11'], datum['zk11'], datum['zp11']}) or p.link({datum['w11'], datum['k11'], datum['p11']})) or ''
			element10 = ((zweite and datum['zw10']) or (datum['w10'] and not zweite)) and '<br/>'..b10..gemeinden10..' &#11166; '..(zweite and p.link({datum['zw10'], datum['zk10'], datum['zp10']}) or p.link({datum['w10'], datum['k10'], datum['p10']})) or ''
			element9 = ((zweite and datum['zw9']) or (datum['w9'] and not zweite)) and '<br/>'..b9..gemeinden9..' &#11166; '..(zweite and p.link({datum['zw9'], datum['zk9'], datum['zp9']}) or p.link({datum['w9'], datum['k9'], datum['p9']})) or ''
			element8 = ((zweite and datum['zw8']) or (datum['w8'] and not zweite)) and '<br/>'..b8..gemeinden8..' &#11166; '..(zweite and p.link({datum['zw8'], datum['zk8'], datum['zp8']}) or p.link({datum['w8'], datum['k8'], datum['p8']})) or ''
			element7 = ((zweite and datum['zw7']) or (datum['w7'] and not zweite)) and '<br/>'..b7..gemeinden7..' &#11166; '..(zweite and p.link({datum['zw7'], datum['zk7'], datum['zp7']}) or p.link({datum['w7'], datum['k7'], datum['p7']})) or ''
			element6 = ((zweite and datum['zw6']) or (datum['w6'] and not zweite)) and '<br/>'..b6..gemeinden6..' &#11166; '..(zweite and p.link({datum['zw6'], datum['zk6'], datum['zp6']}) or p.link({datum['w6'], datum['k6'], datum['p6']})) or ''
			element5 = ((zweite and datum['zw5']) or (datum['w5'] and not zweite)) and '<br/>'..b5..gemeinden5..' &#11166; '..(zweite and p.link({datum['zw5'], datum['zk5'], datum['zp5']}) or p.link({datum['w5'], datum['k5'], datum['p5']})) or ''
			element4 = ((zweite and datum['zw4']) or (datum['w4'] and not zweite)) and '<br/>'..b4..gemeinden4..' &#11166; '..(zweite and p.link({datum['zw4'], datum['zk4'], datum['zp4']}) or p.link({datum['w4'], datum['k4'], datum['p4']})) or ''
			element3 = ((zweite and datum['zw3']) or (datum['w3'] and not zweite)) and '<br/>'..b3..gemeinden3..' &#11166; '..(zweite and p.link({datum['zw3'], datum['zk3'], datum['zp3']}) or p.link({datum['w3'], datum['k3'], datum['p3']})) or ''
			element2 = ((zweite and datum['zw2']) or (datum['w2'] and not zweite)) and '<br/>'..b2..gemeinden2..' &#11166; '..(zweite and p.link({datum['zw2'], datum['zk2'], datum['zp2']}) or p.link({datum['w2'], datum['k2'], datum['p2']})) or ''					
			element1 =  b1..gemeinden1..' &#11166; '.. (zweite and p.link({datum['zw1'], datum['zk1'], datum['zp1']}) or p.link({datum['w1'], datum['k1'], datum['p1']}))
			
			element = element1..element2..element3..element4..element5..element6..element7..element8..element9..element10..element11

			root:tag('tr')
				:tag('td'):wikitext('[[Datei:'..karte['map']..'|50x50px]]'):done()
				:tag('td'):wikitext('[['..einheit..']]<br/><small>('..datum['i']..' Gemeinden)</small>'):done()
				:tag('td'):wikitext(element):done()
		end
	end
	return root
end

return p