Modul:GovernmentComposition
Aceasta este pagina de documentație pentru Modul:GovernmentComposition. Pagina descrie modul de folosire al formatului și conține categoriile de care acesta aparține, precum și orice altceva ce nu face parte din formatul propriu-zis. |
Acest format implementează {{Guvern}}.
Folosire din pagini
modificareDin pagini, se poate folosi prin includerea formatului {{Guvern}} conform instrucțiunilor din pagina sa de documentare.
Folosire din formate
modificareDin formate, se pot apela direct două funcții:
- fromArray în care i se va putea da ca parametru un tabel cu parametri exact așa cum sunt precizați la {{Guvern}}
- fromArgs în care i se va putea da următorii parametri:
- primul parametru este un tabel-listă ale cărui intrări au următoarea structură:
- position - numele funcției
- ministers - un tabel-listă ale cărui intrări au următoarea structură:
- name - numele ministrului
- startTime - șir de caractere ce reprezintă data începerii mandatului
- endTime - șir de caractere ce reprezintă data sfârșitului mandatului
- party - obiect cu următoarele câmpuri:
- name - numele partidului
- abbr - un indice în tabelul de culori, vezi parametrul al patrulea
- color - culoarea CSS a fundalului celulei de tabel în care se va afișa partidul
- al doilea parametru este un flag boolean, care dacă are valoarea true declanșează afișarea coloanei de partid
- al treilea parametru este un flag boolean, care dacă are valoarea true declanșează afișarea coloanei de nr. crt.
- al patrulea parametru este un tabel ce mapează acronimele partidelor la culoarea celulelor de fundal.
- primul parametru este un tabel-listă ale cărui intrări au următoarea structură:
local TableTools = require('Modul:TableTools')
local StringUtils = require('Modul:StringUtils')
local illWd = require('Modul:Ill-wd').fromArgs
local polPartyData = mw.loadData('Modul:Polparty/countrydata')
local emptyToNil = function(arg) return StringUtils._emptyToNil({arg}) end
local prependToString = function(arg1, arg2) return StringUtils._prependToString({arg1, arg2}) end
local p = {}
function p.fromArgs(structureList, showParty, showNumber, colormap)
colormap = colormap or {}
local tableElement = mw.html.create('table')
:addClass('wikitable')
local headerRow = tableElement:tag('tr')
if showNumber then
headerRow:tag('th'):css('background', '#ccc'):wikitext('Nr. crt.')
end
headerRow:tag('th'):css('background', '#ccc'):wikitext('Minister')
headerRow:tag('th'):css('background', '#ccc'):wikitext('Nume')
if showParty then
headerRow:tag('th'):css('background', '#ccc'):wikitext('Partid')
end
headerRow:tag('th'):css('background', '#ccc'):wikitext('În funcție din')
headerRow:tag('th'):css('background', '#ccc'):wikitext('Până la')
local positionIdx = 1
for _,eachStructurePart in ipairs(structureList) do
local crtRow = tableElement:tag('tr')
if showNumber then
crtRow:tag('td'):wikitext(tostring(positionIdx))
positionIdx = positionIdx + 1
end
crtRow:tag('td'):attr('rowspan', tostring(#eachStructurePart.ministers))
:wikitext(eachStructurePart.position)
local createNewRow = false
for _,eachMinister in ipairs(eachStructurePart.ministers) do
if createNewRow then crtRow = tableElement:tag('tr') else createNewRow = true end
crtRow:tag('td'):wikitext(eachMinister.name)
if showParty then
local bgcolor = colormap[eachMinister.party and eachMinister.party.abbr]
if not bgcolor and eachMinister.party then
bgcolor = eachMinister.party.color
end
crtRow:tag('td'):css('background', bgcolor):wikitext(eachMinister.party and eachMinister.party.name or nil)
end
crtRow:tag('td'):wikitext(eachMinister.startTime)
crtRow:tag('td'):wikitext(eachMinister.endTime)
end
end
return tostring(tableElement)
end
local function isYes(value)
return value and (value == 'da' or value == 'true' or value == 'yes')
end
function p.fromArray(args)
local structure = {}
local showParty = isYes(args['afișează_partid']) or isYes(args['arată_partid'])
local showNumber = isYes(args['afișează_nr_crt']) or isYes(args['arată_număr'])
local country = args['țară'] and mw.text.trim(args['țară']) or nil
local colormap = {}
for eachArg,eachValue in pairs(args) do
local postMatch, postNrStr = mw.ustring.match(eachArg, '(post(%d+))')
if postMatch then
local postNr = tonumber(postNrStr)
if postMatch == eachArg then
structure[postNr] = structure[postNr] or {}
structure[postNr].position = eachValue
else
structure[postNr] = structure[postNr] or {}
local ministerMatch, ministerNrStr = mw.ustring.match(eachArg, '(ministru(%d+))', 1 + mw.ustring.len(postMatch))
if ministerMatch then
local ministerNr = tonumber(ministerNrStr)
structure[postNr].ministers = structure[postNr].ministers or {}
structure[postNr].ministers[ministerNr] = structure[postNr].ministers[ministerNr] or {}
local paramName = mw.ustring.sub(eachArg, 1 + mw.ustring.len(postMatch) + 1 + mw.ustring.len(ministerMatch) + 1)
if paramName == 'nume' or paramName == '' then
structure[postNr].ministers[ministerNr].name = eachValue
elseif paramName == 'început' then
structure[postNr].ministers[ministerNr].startTime = eachValue
elseif paramName == 'sfârșit' then
structure[postNr].ministers[ministerNr].endTime = eachValue
elseif paramName == 'culoarepartid' then
structure[postNr].ministers[ministerNr].party = structure[postNr].ministers[ministerNr].party or {}
structure[postNr].ministers[ministerNr].party.color = prependToString(eachValue, '#')
elseif paramName == 'partid' then
structure[postNr].ministers[ministerNr].party = structure[postNr].ministers[ministerNr].party or {}
local partyEntry = country and country ~= '' and polPartyData[country][eachValue] or nil
if partyEntry then
structure[postNr].ministers[ministerNr].party.color = structure[postNr].ministers[ministerNr].party.color or prependToString(partyEntry.color, '#')
structure[postNr].ministers[ministerNr].party.name = partyEntry.link and ('[[' .. partyEntry.link .. '|' .. (partyEntry.abbr or eachValue) .. ']]') or partyEntry.q and illWd(partyEntry.q, eachValue) or eachValue
else
structure[postNr].ministers[ministerNr].party.name = eachValue
end
structure[postNr].ministers[ministerNr].party.abbr = eachValue
elseif paramName == 'partidq' then
structure[postNr].ministers[ministerNr].party = structure[postNr].ministers[ministerNr].party or {}
structure[postNr].ministers[ministerNr].party.name = illWd(eachValue)
elseif paramName == 'q' then
structure[postNr].ministers[ministerNr].name = illWd(eachValue)
end
end
end
end
local colorMatch, colorParty = mw.ustring.match(eachArg, '(culoare_(%w+))')
if colorMatch == eachArg then
colormap[colorParty] = prependToString(mw.text.trim(eachValue), '#')
end
end
structure = TableTools.compressSparseArray(structure)
for _,eachStructurePart in ipairs(structure) do
if eachStructurePart.ministers then
eachStructurePart.ministers = TableTools.compressSparseArray(eachStructurePart.ministers)
end
end
return p.fromArgs(structure, showParty, showNumber, colormap)
end
function p.fromFrame(frame)
if frame then
local parentFrame = frame:getParent()
if parentFrame and parentFrame.args then
return p.fromArray(parentFrame.args)
end
end
if frame and frame.args then
return p.fromArray(frame.args)
end
return error('Nu s-au găsit parametri pentru modul')
end
return p