Module:Gemeente in Nederland: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
Onderdrukking van foutmelding als page_id geen geldige waarde heeft |
Betere namen van variabelen, beginnetje met sortering op plaatsnaam (hoofdplaatsen boven), benodigde credits toegevoegd, bron bij totaal inwoneraantal |
||
Regel 4:
--Functie "settlements_table", maakt een tabel met alle woonplaatsen in een gemeente en de bijbehorende inwoneraantallen en markeert de hoofdplaats(en)
function p.settlements_table(frame)
local result = ''
--Argumenten ophalen
local args = frame.args
--Als het argument "
if args.
--Anders wordt het Wikidata-ID van de pagina zelf gebruikt
else
end
--Als de pagina geen Wikidata-ID heeft en ook geen Wikidata-ID is opgegeven, wordt een foutmelding geretourneerd
if
return frame:expandTemplate{ title = 'Tekstkleur', args = {'red', '\nEr kon geen tabel gemaakt worden omdat deze pagina geen Wikidata-ID heeft en er geen Wikidata-ID is opgegeven als parameter (zie [[Sjabloon:Tabel woonplaatsen Nederlandse gemeente|hier]] welke parameters gebruikt kunnen worden).'} }
end
--De hoofdsteden van, kernen in en het totale
local capitals = mw.wikibase.getBestStatements(
local settlements = mw.wikibase.getBestStatements(
local total_population_wd = tonumber(mw.wikibase.getBestStatements(
--De ID's van de hoofdsteden worden in een table gezet
local capital_ids = {}
for k in pairs(capitals) do
capital_ids[k] = capitals[k].mainsnak.datavalue.value.id
Regel 33 ⟶ 34:
local total_population_sum = 0
for k in pairs(settlements) do
local
--Het inwoneraantal wordt opgehaald, alsmede het inwoneraantal met bron erachter
local
local
local
--De naam van de kern wordt opgehaald
local
--Voor de kernnamen worden links naar artikelen gemaakt
local sitelink = mw.wikibase.getSitelink(id)
local table_name = '[[' .. sitelink .. '|' .. name .. ']]'
--Als de kern een hoofdstad van de gemeente is, wordt hij gemarkeerd
if is_capital then
end
--Gegevens over de kern worden opgeslagen in een table
rows[k] = {name=
--De som van alle inwoneraantallen wordt berekend
total_population_sum = total_population_sum + (
end
--De table wordt gesorteerd op
table.sort(rows,
--De tabel wordt gemaakt met de gegevens uit de table "rows". Merk op dat hier "row.
for k, row in pairs(rows) do
result = result .. '\n|-\n|' .. row.
end
result = '{| class="wikitable sortable"\n|-\n!Kern!!Inwoneraantal!!Peildatum' .. result .. '\n|-\n|Totaal:||' .. format_thousand(total_population_sum) .. '\n|}'▼
--Als de som van de inwoneraantallen niet gelijk is aan de waarde gegeven op Wikidata, wordt
local population_difference = total_population_wd - total_population_sum
▲ --Als de som van de inwoneraantallen niet gelijk is aan de waarde gegeven op Wikidata, wordt een foutmelding getoond
if
result = result .. '\n|-\n|Overig||' .. format_thousand(population_difference) .. '||'
error = frame:expandTemplate{ title = 'Tekstkleur', args = {'red', '\nDe optelsom van de inwoneraantallen komt niet overeen met '.. format_thousand(total_population_wd) .. ', het aantal gegeven op [[:d:' .. page_id .. '|Wikidata]]!'} }▼
result = result .. error▼
end
--Het totale inwoneraantal van de gemeente uit Wikidata wordt onderaan de tabel gezet. Merk op dat hier "total_population_wd_with_source" wordt gebruikt, het inwoneraantal mét bron erachter
local total_population_wd_date = frame:expandTemplate{ title = 'Inwonertal', args = {id=municipality_id, soort='datum'} }
local total_population_wd_with_source = frame:expandTemplate{ title = 'Inwonertal', args = {id=municipality_id} }
▲ result = '{| class="wikitable sortable"\n|-\n!Kern!!Inwoneraantal!!Peildatum' .. result .. '\n|-\n|Totaal:||' ..
--Het resultaat wordt geretourneerd
Regel 82 ⟶ 93:
end
--Functie "compare_rows", retourneert welke rij boven en welke onder de andere staat: op alfabetische volgorde van kernnamen, waarbij de hoofdplaatsen bovenaan staan (alfabetisch gesorteerd indien meer dan één)
function
return a.is_capital and not b.is_capital
--[[WAAROM WERKT DIT NIET :(
return a.is_capital and not b.is_capital or a.name <= b.name]]
end▼
end
--Functie "format_thousand", voegt scheidingstekens voor duizendtallen (punten) toe aan een getal
--Credits: remiX (04-01-2013), van http://www.computercraft.info/forums2/index.php?/topic/8065-lua-thousand-separator/
function format_thousand(v)
local s = string.format("%d", math.floor(v))
Regel 103 ⟶ 110:
return p
--Buiten gebruik gesteld, vervangen door tabelwaarde "Overig"
--Als de som van de inwoneraantallen niet gelijk is aan de waarde gegeven op Wikidata, wordt een foutmelding getoond
--if total_population_wd ~= total_population_sum then
▲
|