Modul:Xanxank
Xuyakirin
Belgekirina modulê[biafirîne]
p = {}
-- ISO country codes with country name (1), chart link (2), abbreviated chart publisher (3), certification publisher link (4), abbreviated certification publisher (5), no. 1 list ID (6)
countrytable = {
["AUT"] = { "Awistirya", "Ö3 Austria Top 40", "Ö3", "IFPI Austria – Verband der Österreichischen Musikwirtschaft", "IFPI", "Österreich" },
["ARG"] = { "Arjentîn", "Argentinien", "CAPIF", "Cámara Argentina de Productores de Fonogramas y Videogramas", "CAPIF", "Argentinien" },
["AUS"] = { "Awistralya", "Xanxanka Stranên Awistralya", "ARIA", "Australian Recording Industry Association", "ARIA", "Australien" },
["BEL"] = { "Belgiya", "Xanxanka Stranên Belgiya", "Ultratop", "Belgian Entertainment Association", "BEA", "Belgien" },
["BGR"] = { "Bulgaristan", "Bulgarien", "BAMP", "Bulgarian Association of the Music Producers", "BAMP", "Bulgarien" },
["BRA"] = { "Brazîl", "Brasilien", "PMB", "Pró-Música Brasil", "PMB" },
["CAN"] = { "Kanada", "Xanxanka Stranên Kanada", "MC", "Music Canada", "MC", "Kanada" },
["CHE"] = { "Swîsre", "Hitparadeya Swîsre", "IFPI", "IFPI Schweiz", "IFPI", "der Schweiz" },
["CHL"] = { "Şîle", "Chile", "", "IFPI Chile", "IFPI" },
["COL"] = { "Kolumbiya", "Kolumbien", "", "Asociación Colombiana de Productores de Fonogramas", "ASINCOL" },
["CZE"] = { "Çekya", "Tschechien", "IFPI", "IFPI Tschechien", "IFPI", "Tschechien" },
["DEU"] = { "Almanya", "Xanxanka Stranên Almanya", "GfK", "Bundesverband Musikindustrie", "BVMI", "Almanya" },
["DNK"] = { "Danîmarka", "Hitlisten (dänische Musikcharts)", "IFPI/Nielsen", "IFPI Dänemark", "IFPI", "Dänemark" },
["ECU"] = { "Ekwador", "Ecuador", "", "Sociedad de Productores de Fonogramas", "SOPROFON" },
["ESP"] = { "Spanya", "Xanxanka Stranên Spanya", "Promusicae", "Productores de Música de España", "Promusicae", "Spanien" },
["EUR"] = { "Ewropa", "Ewropa", "", "International Federation of the Phonographic Industry", "IFPI" },
["FIN"] = { "Fînlenda", "Xanxanka Stranên Fînlenda", "IFPI", "Musiikkituottajat – IFPI Finland", "IFPI", "Finnland" },
["FRA"] = { "Fransa", "Fransa", "SNEP", "Syndicat National de l’édition Phonographique", "SNEP", "Frankreich" },
["GRC"] = { "Yewnanistan", "IFPI Griechenland#Musikcharts", "IFPI", "IFPI Griechenland", "IFPI", "Griechenland" },
["HKG"] = { "Hongkong", "Hongkong", "", "IFPI Hong Kong Group", "IFPI/HKRIA" },
["HUN"] = { "Macaristan", "Ungarn", "MAHASZ", "Magyar Hanglemezkiadók Szövetsége", "MAHASZ", "Ungarn" },
["HRV"] = { "Kroatya", "Kroatien", "HDU", "Hrvatska diskografska udruga", "HDU", "Kroatien" },
["IDN"] = { "Endonezya", "Indonesien", "", "Asosiasi Industri Rekaman Indonesia", "ASIRI" },
["IND"] = { "Hindistan", "Indien", "", "The Indian Music Industry", "IMI" },
["IRL"] = { "Îrlenda", "Irische Musikcharts", "IRMA", "Irish Recorded Music Association", "IRMA", "Irland" },
["ISL"] = { "Îslenda", "Island", "", "IFPI Island", "IFPI" },
["ITA"] = { "Îtalya", "Xanxanka Stranên Îtalî", "FIMI", "Federazione Industria Musicale Italiana", "FIMI", "Italien" },
["JPN"] = { "Japonya", "Oricon#Oricon-Charts", "Oricon", "Recording Industry Association of Japan", "RIAJ", "Japan" },
["KOR"] = { "Korêya Başûr", "Gaon Chart", "KMCA", "Korea Music Content Association", "KMCA", "Südkorea" },
["LBN"] = { "Lubnan", "Libanon", "", "IFPI Middle East Awards", "IFPI" },
["LVA"] = { "Letland", "Lettland", "", "Latvian Music Producers Association", "LaMPA" },
["MEX"] = { "Meksîk", "Mexiko", "AMPROFON", "Asociación Mexicana de Productores de Fonogramas y Videogramas", "AMPROFON", "Mexiko" },
["MYS"] = { "Malezya", "Malaysia", "RIM", "Recording Industry Association of Malaysia", "RIM" },
["NLD"] = { "Holenda", "Xanxanka Stranên Holenda", "Media Markt / Dutch Charts", "Nederlandse Vereniging van Producenten en Importeurs van beeld- en geluidsdragers", "NVPI", "den Niederlanden" },
["NOR"] = { "Norwêc", "Xanxanka Stranên Norwêc", "Nielsen", "IFPI Norwegen", "IFPI", "Norwegen" },
["NZL"] = { "Nû Zelanda", "Neuseeländische Musikcharts", "RMNZ", "Recorded Music NZ", "RMNZ"; "Neuseeland" },
["PER"] = { "Perû", "Peru", "", "Unión Peruana de Productores Fonográficos", "UNIMPRO" },
["PHL"] = { "Pîlîpîn", "Philippinen", "", "Kapisanan ng Industriya ng Plaka ng Pilipinas", "PARI" },
["POL"] = { "Polonya", "Związek Producentów Audio-Video#Musikcharts", "ZPAV", "Związek Producentów Audio-Video", "ZPAV", "Polen" },
["PRT"] = { "Portûgal", "Associação Fonográfica Portuguesa#Musikcharts", "AFP", "Associação Fonográfica Portuguesa", "AFP", "Portugal" },
["ROU"] = { "Romanya", "Rumänien", "", "", "", "Rumänien" },
["RUS"] = { "Rûsya", "Russland", "", "National Federation of Phonograph Producers", "NFPF" },
["SVK"] = { "Slowakya", "Slowakei", "IFPI", "IFPI Tschechien", "IFPI", "Slowakei" },
["SWE"] = { "Swêd", "Xanxanka Stranên Swêd", "GLF", "IFPI Schweden", "IFPI", "Schweden" },
["SGP"] = { "Sîngapûr", "Singapur", "RIAS", "Recording Industry Association (Singapore)", "RIAS" },
["SKE"] = { "Slowakya", "Slowakei", "IFPI", "", "", "der Slowakei" },
["THA"] = { "Tayland", "Thailand", "", "Thai Entertainment Content Trade Association", "TECA" },
["TUR"] = { "Tirkiye", "Tirkiye", "", "Bağlantılı Hak Sahibi Fonogram Yapımcıları Meslek Birliği", "MÜ-YAP" },
["TWN"] = { "Taywan", "Republik China (Taiwan)", "", "Recording Industry Foundation in Taiwan", "RIT" },
["GBR"] = { "Keyaniya Yekbûyî", "Xanxanka Stranên Brîtanî", "OCC", "British Phonographic Industry", "BPI", "den britischen Charts" },
["USA"] = { "Dewletên Yekbûyî yên Amerîkayê", "Billboard (Magazin)#Billboard-Charts", "Billboard", "Recording Industry Association of America", "RIAA", "den USA" },
["URY"] = { "Ûrûgûay", "Uruguay", "", "Cámara Uruguaya del Disco", "CUD" },
["VEN"] = { "Venezuela", "Venezuela", "", "Association of Venezuelan Phonograph Producers", "APFV" },
["ZAF"] = { "Afrîkaya Başûr", "Südafrika", "", "The Recording Industry of South Africa", "RISA"},
-- definierte Sonderfälle
["EUR2"] = { "Ewropa", "Europa", "", "Impala (Verband)#Impala Music Awards", "Impala" },
["GCC"] = { "Golf-Kooperationsrat", "Golf-Kooperationsrat", "", "IFPI Middle East Awards", "IFPI" },
["BEF"] = { "Flandern", "Musikcharts in Belgien", "Ultratop", "Belgian Entertainment Association", "BEA", "Belgien" },
["BEW"] = { "Wallonie", "Musikcharts in Belgien", "Ultratop", "Belgian Entertainment Association", "BEA", "Belgien" },
["NLD-A"] = { "Holenda", "Dutch Charts", "Dutch Charts", "Nederlandse Vereniging van Producenten en Importeurs van beeld- en geluidsdragers", "NVPI", "den Niederlanden" },
["NLD-S"] = { "Holenda", "Nederlandse Top 40", "Media Markt", "Nederlandse Vereniging van Producenten en Importeurs van beeld- en geluidsdragers", "NVPI", "den Niederlanden" },
["USA-A"] = { "Dewletên Yekbûyî yên Amerîkayê", "Billboard 200", "Billboard", "Recording Industry Association of America", "RIAA", "den USA" },
["USA-S"] = { "Dewletên Yekbûyî yên Amerîkayê", "Billboard Hot 100", "Billboard", "Recording Industry Association of America", "RIAA", "den USA" }
}
-- certification names in English (1) and German (2)
certtable = {
["Silber"] = {"silver", "Zîv"},
["S"] = {"silver", "Zîv"},
["Gold"] = {"gold", "Zêr"},
["G"] = {"gold", "Zêr"},
["Platin"] = {"platinum", "Platîn"},
["P"] = {"platinum", "Platîn"},
["Diamant"] = {"diamond", "Almast"},
["D"] = {"diamond", "Almast"},
["P+G"] = {"Platinum and gold", "Platîn + Zêr"},
["G+P"] = {"Platinum and gold", "Platîn + Zêr"}
}
-- Länderspalten für Charttabellen - country columns in chart table head
p.countryhead = function (frame, countries, rformat, year)
local ret = ""
for c = 1, #countries.countries do
local country = countries.countries[c]
local countryconv = frame:expandTemplate{ title = 'ISO3166-A3-Konversion', args = { country } }
local countrycode = countrytable[countryconv] or countrytable[country]
if countryconv == "NLD" then
if countries.rformat == "Singles" then
countrycode = countrytable["NLD-S"]
else
countrycode = countrytable["NLD-A"]
end
elseif countryconv == "USA" then
if countries.rformat == "Singles" then
countrycode = countrytable["USA-S"]
else
countrycode = countrytable["USA-A"]
end
end
ret = ret .. "\n! style='width:52px;background-color:#FFEBAD;' data-sort-type='number' | "
if not countrycode then
ret = ret .. country
else
ret = ret .. "{{"
-- country code for flag template
if country == "BEF" then
ret = ret .. "BE-VLG"
elseif country == "BEW" then
ret = ret .. "BE-WAL"
else
ret = ret .. countryconv
end
-- chart link
ret = ret .. "|" .. countrycode[2] .. "|"
-- displayed link text
if country == "BEF" then
ret = ret .. "BE<sup>F</sup>"
elseif country == "BEW" then
ret = ret .. "BE<sup>W</sup>"
elseif countryconv == "BEL" and (tonumber(countries.year) or 0) > 1994 then
ret = ret .. "BE<div style='display:none;'>[[Şablon:Xanxank/Xwedîkirin/Belgiya]]</div>"
else
ret = ret .. frame:expandTemplate{ title = 'ISO3166-A2-Konversion', args = { country } }
end
ret = ret .. "}}"
end
end
return ret
end
-- Charttabelle - chart table
p.charttablehead = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local countries = {}
local i = 0
for k, v in ipairs (parameters) do
v = mw.text.trim( v )
if #v > 0 then
i = i + 1
countries[i] = v
end
end
local source = parameters["Çavkanî"]
local rformat = parameters.Cure
local legend = parameters.Legende
local sortable = parameters.sortierbar
local extra = parameters.Extra
local titleaddition = parameters.SernavErg
local content = parameters.Naverok or ""
local tablewidth = {
["1"] = { "250", "320" },
["1e"] = { "245", "220", "175" },
["2"] = { "300", "320" },
["2e"] = { "285", "220", "175" },
["3"] = { "350", "300" },
["3e"] = { "315", "210", "160" },
["4"] = { "400", "270" },
["4e"] = { "345", "200", "160" }
}
local width = "1"
if tablewidth[parameters.Breite] then
width = parameters.Breite
end
if extra then
width = width .. "e"
end
local ret = "<templatestyles src='Şablon:Xanxank/styles.css' />"
if legend then
ret = ret .. "<span style='font-size:smaller;font-style:italic;'>Sal: Sala yekem helwesta xanxankê; Helwestên xanxankê: bi cîhkirina herî zêde û tevahî hefte yên mayîna xanxankê (…: hîn di xanxankê de tê dîtin); Daxuyanî: Xelat bi hejmarek yekîneyên firotinê ye.</span>"
end
ret = ret .. "\n{| class='wikitable"
if sortable then
ret = ret .. " sortable"
end
ret = ret .. " charts-zebragrey' style='text-align:center; background-color:#E1E9F3' \n|-"
ret = ret .. "\n! style='width:25px;background-color:#FFEBAD;' rowspan='2' | Sal"
ret = ret .. "\n! style='width:" .. tablewidth[width][1] .. "px;background-color:#FFEBAD;' rowspan='2'| Sernav"
if titleaddition then
ret = ret .. "<br /><span style='font-size:smaller;font-style:italic;'>" .. titleaddition .. "</span>"
elseif rformat == "Yekane (Single)" then
ret = ret .. "<br /><span style='font-size:smaller;font-style:italic;'>Albûm</span>"
end
ret = ret .. "\n! style='background-color:#FFEBAD;' colspan='" .. #countries .. "'|"
if #countries > 1 then
ret = ret .. " Helwesta Xanxankê"
else
ret = ret .. " Xanxank"
end
ret = ret .. (source or "<div style='display:none'>[[Şablon:Xanxank/Xwedîkirin/bêçavkanî]]</div>") .. "\n! style='width:" .. tablewidth[width][2] .. "px;background-color:#FFEBAD;' rowspan='2' class='unsortable' | Daxuyanî"
if extra then
ret = ret .. "\n! style='width:" .. tablewidth[width][3] .. "px;background-color:#FFEBAD;' rowspan='2' class='unsortable' |" .. extra
end
ret = ret .. "\n|-"
-- country columns
ret = ret .. p.countryhead( frame, {countries = countries, rformat = rformat, year = year } )
ret = ret .. "\n|- \n" .. content .. "\n|- \n|}"
return frame:preprocess (ret)
end
-- Chartauswertung - chart statistics
p.chartstatistics = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local countries = {}
local i = 0
for k, v in ipairs (parameters) do
v = mw.text.trim( v )
if #v > 0 then
i = i + 1
countries[i] = v
end
end
if #countries > 8 then return "Too many countries" end
local rformat = parameters.Art
local comment = parameters.Anmerkung
local istable = parameters.Tabelle
local ret = nil
if istable then
ret = "{| class='wikitable charts-zebragrey2' style='text-align:center;' \n |- \n ! style='width:200px; background-color:#FFEBAD;' |"
-- country columns
ret = ret .. p.countryhead( frame, {countries = countries, rformat = rformat } )
ret = ret .. "\n|-"
else
ret = "|- class='sortbottom charts-redstats'\n| rowspan='3'|"
end
ret = ret .. "\n| style='text-align:left;'|"
if rformat then
ret = ret .. "Hejmara-yek-" .. rformat
else
ret = ret .. "Hejmara yek"
end
for c = 1, #countries do
local n = "NR1_" .. countries[c]
local No1 = parameters[n]
if No1 == "" or No1 == nil then
ret = ret .. "\n| " .. "—"
else
ret = ret .. "\n| " .. No1
end
end
if not istable then
ret = ret .. "\n| rowspan='3' colspan='2' style='text-align:left; font-size:smaller;' |"
if comment then
ret = ret .. comment
end
end
ret = ret .. "\n|- "
if not istable then
ret = ret .. "class='sortbottom charts-redstats' "
end
ret = ret .. "\n| style='text-align:left;'|"
if rformat then
ret = ret .. "Top-10-" .. rformat
else
ret = ret .. "li ser Top 10'an"
end
for c = 1, #countries do
local t = "T10_" .. countries[c]
local Top10 = parameters[t]
if Top10 == "" or Top10 == nil then
ret = ret .. "\n| " .. "—"
else
ret = ret .. "\n| " .. Top10
end
end
ret = ret .. "\n|- "
if istable then
ret = ret .. "style='background:#FBF8D6; font-weight:bold;'"
else
ret = ret .. "class='sortbottom charts-redstats'"
end
ret = ret .. "\n| style='text-align:left;'|" .. (rformat or "") .. " di nav Xanxankê"
for c = 1, #countries do
local g = "INSG_" .. countries[c]
local Total = parameters[g]
if Total == "" or Total == nil then
ret = ret .. "\n| " .. "—"
else
ret = ret .. "\n| " .. Total
end
end
if istable then
ret = ret .. "\n|}"
end
return frame:preprocess (ret)
end
-- Charteintrag - chart table entry
p.charttablerow = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local countries = {}
local i = 0
for k, v in ipairs (parameters) do
v = mw.text.trim( v )
if #v > 0 then
i = i + 1
countries[i] = v
end
end
local year = parameters.Sal
local colour = parameters.Farbe
local temporary = "<div style='display:none'>[[Şablon:Xanxank/Xwedîkirin/demekî"
if tonumber(year) then
if tonumber(year) > 2009 then
temporary = temporary .. "/" .. year
end
end
temporary = temporary .. "]]</div>"
-- There may be "Sernav" instead of "Sernav1"
if parameters["Sernav"] then
parameters["Reng1"] = parameters["Reng"]
parameters["Sernav1"] = parameters["Sernav"]
parameters["Albûm1"] = parameters["Albûm"]
parameters["SernavErg1"] = parameters["SernavErg"]
for c = 1, #countries do
local p = "Helwest_" .. countries[c]
local p1 = "Helwest_" .. countries[c] .. "1"
parameters[p1] = parameters[p]
local w = "Hefte_" .. countries[c]
local w1 = "Hefte_" .. countries[c] .. "1"
parameters[w1] = parameters[w]
local m = "Mehe_" .. countries[c]
local m1 = "Mehe_" .. countries[c] .. "1"
parameters[m1] = parameters[m]
local y = "Sal_" .. countries[c]
local y1 = "Sal_" .. countries[c] .. "1"
parameters[y1] = parameters[y]
local s = "Derizandin_" .. countries[c]
local s1 = "Derizandin_" .. countries[c] .. "1"
parameters[s1] = parameters[s]
local z = "Rêzik_" .. countries[c]
local z1 = "Rêzik_" .. countries[c] .. "1"
parameters[z1] = parameters[z]
end
parameters["Daxuyanî1"] = parameters["Daxuyanî"]
parameters["Bêhtir1"] = parameters["Bêhtir"]
parameters["Bêhtir Rêzik1"] = parameters["Bêhtir Rêzik"]
end
local rows = 0
repeat
rows = rows + 1
local title = "Sernav" .. rows
until not parameters[title]
rows = rows - 1
if rows == 0 then return "Add some rows" end
if #countries > 8 then return "Too many countries" end
local ret = "|-"
-- fallback for row colours, overwriting CSS zebra style (first row)
if colour == "1" then
ret = ret .. " style='background:#eeeeee;'"
elseif colour == "0" then
ret = ret .. " style='background:#e1e9f3;'"
end
ret = ret .. "\n | rowspan='" .. rows .. "' style='background-color:#f0f0ff;' | " .. (year or "")
if year then
if not string.match (year, "^%d%d%d%d$") then
ret = ret .. "<div style='display:none'>[[Şablon:Xanxank/Xwedîkirin/Sal]]</div>"
end
end
for row = 1, rows do
local t = "Sernav" .. row
local title = parameters[t]
local a = "Albûm" .. row
local album = parameters[a]
local ta = "SernavErg" .. row
local titleaddition = parameters[ta]
local co = "Reng" .. row
local rowcolour = parameters[co]
if row > 1 then
ret = ret .. "\n|-"
-- individual row colours, overwriting everything
if rowcolour == "1" then
ret = ret .. " style='background:#eeeeee;'"
else
if rowcolour == "0" then
ret = ret .. " style='background:#e1e9f3;'"
else
-- fallback for row colours, overwriting CSS zebra style (other rows)
--check if even
if row % 2 == 0 then
if colour == "0" then
ret = ret .. " style='background:#eeeeee;'"
elseif colour == "1" then
ret = ret .. " style='background:#e1e9f3;'"
end
-- if odd
else
if colour == "0" then
ret = ret .. " style='background:#e1e9f3;'"
elseif colour == "1" then
ret = ret .. " style='background:#eeeeee;'"
end
end
end
end
end
ret = ret .. "\n| style='text-align:left;' | " .. title .. "<br><span style='font-style:italic;font-size:smaller;'>" .. (album or titleaddition or "") .. "</span>"
for c = 1, #countries do
local p = "Helwest_" .. countries[c] .. row
local position = parameters[p]
if position ~= "n" then
local w = "Hefte_" .. countries[c] .. row
local weeks = parameters[w]
local m = "Mehe_" .. countries[c] .. row
local months = parameters[m]
local y = "Sal_" .. countries[c] .. row
local year1 = parameters[y]
local s = "Derizandin_" .. countries[c] .. row
if parameters[s] and #parameters[s] == 0 then parameters[s] = nil end
local z = "Rêzik_" .. countries[c] .. row
if parameters[z] and #parameters[z] == 0 then parameters[z] = nil end
ret = ret .. "\n|"
if parameters[s] then
ret = ret .. " colspan='" .. parameters[s] .. "'"
end
if parameters[z] then
ret = ret .. " rowspan='" .. parameters[z] .. "'"
end
if parameters[s] or parameters[z] then
ret = ret .. " | "
end
if position then
if string.match(position, "^%[%[Lîste") then
ret = ret .. "<div style='display:none;'>[[Şablon:Xanxank/Xwedîkirin/Helwest]]</div>"
end
-- create automatic links to lists of number-one hits in selected countries
if position == "1" or string.match(position, "^1%D") then
local country = countries[c]
local countryconv = frame:expandTemplate{ title = 'ISO3166-A3-Konversion', args = { country } }
local countrycode = countrytable[countryconv] or countrytable[country]
if countrycode then
if countrycode[6] then
position = "[[Lîsteya Hejmara-yek-Hit li " .. countrycode[6] .. " (" .. (year1 or year or "") .. ")|<b>1</b>]]" .. (string.match(position, "1(.*)") or "")
else
position = "<b>1</b>" .. (string.match(position, "1(.*)") or "")
end
else
position = "<b>1</b>" .. (string.match(position, "1(.*)") or "")
end
end
if position == "" then
ret = ret .. "<span style='display:none;'>300!</span>—"
else
if weeks then
if weeks == "n" then
ret = ret .. position
else
if weeks == "" then
ret = ret .. position .. "<br><span style='font-size:smaller;'>(… Hefte)</span>" .. temporary
else
ret = ret .. position .. "<br><span style='font-size:smaller;'>(" .. weeks .. " Hefte)</span>"
end
end
else
if months then
if months == "n" then
ret = ret .. position
else
if months == "" then
ret = ret .. position .. "<br><span style='font-size:smaller;'>(… Mehe)</span>" .. temporary
else
ret = ret .. position .. "<br><span style='font-size:smaller;'>(" .. months .. " Mehe)</span>"
end
end
else
if position then
ret = ret .. position .. "<br><span style='font-size:smaller;'>(… Hefte)</span>" .. temporary
end
end
end
end
else
ret = ret .. "<span style='display:none;'>300!</span>—"
end
end
end
local com = "Daxuyanî" .. row
local comment = parameters[com]
ret = ret .. "\n| style='text-align:left;' |"
if comment then
ret = ret .. "<div style='font-size:smaller;'>\n" .. comment .. "</div>"
end
local x = "Bêhtir" .. row
local extra = parameters[x]
local zx = "Bêhtir Rêzik" .. row
if extra then
if parameters[zx] then
ret = ret .. "\n| rowspan='" .. parameters[zx] .. "' style='text-align:left;' | " .. extra
else
ret = ret .. "\n| style='text-align:left;' | " .. (extra or "")
end
end
end
return ret
end
-- Chartplatzierungen - chart positions table
p.chartposhead = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local entry = {}
for k, v in ipairs (parameters) do
entry [k] = v
end
local rows = 0
repeat
rows = rows + 1
local entry = "" .. rows
until not parameters[entry]
rows = rows - 1
local ret = "{| class='wikitable'"
local title = parameters.Titel
local year = parameters.Jahr
if title then
ret = ret .. "\n|+ " .. title
end
ret = ret .. "\n|- \n! style='width:250px;background-color:#FFEBAD;'| Xanxank"
if year then
ret = ret .. " (" .. year .. ") \n! style='width:90px;background-color:#FFEBAD;' | Helwest"
else
ret = ret .. "\n! style='width:150px;background-color:#FFEBAD;' | Helwesta herî zêde \n! style='width:90px;background-color:#FFEBAD;' | Hefte"
end
-- single rows
ret = ret .. "\n|- style='background:#E1E9F3;'"
for row = 1, rows do
ret = ret .. "\n" .. entry[row]
-- even rows should have different colour from odd rows
if row % 2 == 1 then
ret = ret .. "\n|- style='background:#EEEEEE;'"
else
ret = ret .. "\n|- style='background:#E1E9F3;'"
end
end
ret = ret .. "\n|}"
return ret
end
-- Charts - chart positions table entry
p.chartposrow = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local countryraw = parameters[1]
local country = string.match (parameters[1], "(.*)%s%(.*%)") or countryraw
local brackets = string.match (parameters[1], ".*%s(%(.*%))")
local countryconv = frame:expandTemplate{ title = 'ISO3166-A3-Konversion', args = { country } }
local countrycode = countrytable[countryconv] or countrytable[country]
local position = parameters[2]
local weeks = parameters[3]
local ref = parameters.Q
local year = parameters.Jahr
local ret = "| "
-- template code for country display
local countrydisplay = "{{"
if countrycode then
if country == "BEF" then
countrydisplay = countrydisplay .. "BE-VLG"
elseif country == "BEW" then
countrydisplay = countrydisplay .. "BE-WAL"
elseif string.match (country, "^NLD" ) then
countrydisplay = countrydisplay .. "NLD"
elseif string.match (country, "^USA" ) then
countrydisplay = countrydisplay .. "USA"
else
countrydisplay = countrydisplay .. countryconv
end
countrydisplay = countrydisplay .. "|" .. countrycode[2] .. "|" .. countrycode[1] .. " (" .. countrycode[3] .. ")}}"
else
countrydisplay = countrydisplay .. country .. "}}"
end
if brackets then
if countrycode then
countrydisplay = countrydisplay:gsub ("%(.*%)", brackets )
else
countrydisplay = countrydisplay:gsub ("}}", " " .. brackets .. "}}")
end
end
ret = ret .. countrydisplay
-- sources
ret = ret .. (ref or "")
-- chart position
local numberone = nil
if countrycode then
numberone = countrycode[6]
end
local numberonelink = nil
if numberone then
numberonelink = "Lîsteya Hejmara-yek-Hit li " .. numberone
if year then
numberonelink = numberonelink .. " (" .. year .. ")"
end
end
ret = ret .. "\n| style='text-align:center;' |"
if position then
if position == "1" or string.match(position, "^1%D") then
if numberonelink then
position = "<b>[[" .. numberonelink .. "|1]]</b>" .. (string.match(position, "1(.*)") or "")
else
position = "<b>1</b>" .. (string.match(position, "1(.*)") or "")
end
end
ret = ret .. position
end
-- weeks on chart
if weeks then
if weeks == "" then weeks = "…" .. "<div style='display:none'>[[Vorlage:Chartplatzierungen/Wartung/vorläufig]]</div>" end
ret = ret .. "\n| style='text-align:center;' |" .. weeks
end
return frame:preprocess (ret)
end
-- Infobox Chartplatzierungen - chart positions infobox
p.chartinfobox = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end -- always [?]
local file = parameters.Bild
local caption = parameters.Bildbeschreibung
local temporary = parameters["vorläufige Chartplatzierung"]
local temporaryweeks = nil
local albums = parameters.Alben
local eps = parameters.EPs
local singles = parameters.Singles
local dvds = parameters.DVDs
local rformats = { albums, eps, singles, dvds }
local titles = {"Alben", "EPs", "Singles", "DVDs"}
local refalbums = parameters["Quellen Alben"]
local refeps = parameters["Quellen EPs"]
local refsingles = parameters["Quellen Singles"]
local refdvds = parameters["Quellen DVDs"]
local refs = { refalbums, refeps, refsingles, refdvds }
local source = parameters.Quellen
for temp = 1, 4 do
if rformats[temp] then
if string.match (rformats[temp], "%(…" ) then
temporaryweeks = true
end
end
end
local ret = "<div>\n{| class='float-right' style='background-color:#FFFFFF; width:208px; border:1px solid #DDD;' \n|-"
if file then
if file ~= "" then
ret = ret .. "\n| [[Wêne:" .. file .. "|200px|" .. (caption or mw.title.getCurrentTitle().text) .. "]]"
if caption then
if caption ~= "" then
ret = ret .. "\n|- \n| style='text-align:center; font-size:smaller;' | " .. caption
end
end
end
end
ret = ret .. "\n|- \n| style='background-color:#F3F3F3; text-align:center;' | <span style='font-size:20px; font-stretch:condensed'>Helwesta Xanxankê</span>"
if temporaryweeks then
ret = ret .. "<br /><span style='font-size:12px; font-stretch:condensed;'>(ji bo demekî)</span>"
end
ret = ret .. "<br /><span style='font-size:smaller;'>[[Wîkîpediya:Şablona Xanxankê|Daxuyaniya Daneyan]]</span>"
for section = 1, 4 do
if rformats[section] then
if rformats[section] ~= "" then
ret = ret .. "\n|- style='background:#EAECF0;' \n| style='padding:0 .3em;' | <span style='font-size:larger; font-weight:bold;'>" .. titles[section] .. "</span>" .. (refs[section] or "")
ret = ret .. "\n|- \n| style='padding:0 .3em .5em .3em;' | \n{| style='border-collapse:collapse;width:100%;' \n" .. rformats[section] .. "\n|}"
end
end
end
ret = ret .. "\n|}</div>"
if source then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Quellen-Parameter]]</div>"
elseif not refalbums and not refsingles and not refeps and not refdvds then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/ohne Quellen]]</div>"
end
if temporary then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/vorläufige Chartplatzierung]]</div>"
end
return ret
end
-- Infobox Chartplatzierungen/Werk - chart positions infobox entry
p.chartinfoboxentry = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local templatename = frame:getParent():getTitle()
local rformat = string.match (templatename, "Şablon:(%a*)")
local rows = {}
local i = 0
for k, v in ipairs (parameters) do
local chartlinksub = { ["US"] = { "Billboard Hot 100", "Billboard 200" }, ["NL"] = { "Nederlandse Top 40", "Dutch Charts" } }
local index = nil
if rformat == "Single" then index = 1 else index = 2 end
v = string.gsub (v, "Billboard %(Magazin%)#Billboard%-Charts", chartlinksub["US"][index])
v = string.gsub (v, "Niederländische Musikcharts", chartlinksub["NL"][index])
if #v > 0 then
i = i + 1
rows[i] = v
end
end
local ret = "\n|- \n| colspan='6' style='font-size:95%;font-weight:bold;' |" .. (rows[1] or "")
for row = 2, #rows do
ret = ret .. "\n|- style='background:#F3F3F3;' \n" .. mw.text.trim( rows[row] )
end
return ret
end
-- Charts - chart positions infobox row
p.chartinfoboxrow = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local country = string.gsub (parameters[1], "(BE)<sup>(%a*)</sup>", "%1%2")
local position = parameters[2]
if position then
position = mw.text.trim (position)
end
local entrydate = parameters[3]
if entrydate then
entrydate = mw.text.trim (entrydate)
end
local weeks = parameters[4]
if weeks then
weeks = mw.text.trim (weeks)
end
local ref = parameters[5]
local year = parameters.Jahr or string.match (entrydate, "(%d%d%d%d)$")
local countryconv = frame:expandTemplate{ title = 'ISO3166-A3-Konversion', args = { country } }
local countrycode = countrytable[countryconv] or countrytable[country]
local chartlink = nil
local numberone = nil
if countrycode then
chartlink = countrycode[2]
numberone = countrycode[6]
end
local numberonelink = nil
if numberone then
numberonelink = "Liste der Nummer-eins-Hits in " .. numberone
if year then
numberonelink = numberonelink .. " (" .. year .. ")"
end
end
local ret = "| style='width:5%; background-color:white;' | "
ret = ret .. "\n| style='width:10%; font-size:95%;' | "
if chartlink then
local countrydisplay = 0
if country == "BEF" then
countrydisplay = "BE<sup>F</sup>"
elseif country == "BEW" then
countrydisplay = "BE<sup>W</sup>"
elseif string.match (country, "^NL" ) then
countrydisplay = "NL"
elseif string.match (country, "^US" ) then
countrydisplay = "US"
else
countrydisplay = country
end
ret = ret .. "[[" .. chartlink .. "|" .. countrydisplay .. "]]"
else
ret = ret .. (country or "")
end
if countryconv == "BEL" and (tonumber(year) or 0) > 1994 then
ret = ret .. "<div style='display:none;'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Belgien]]</div>"
end
ret = ret .. "\n| style='width:20%; font-size:95%; font-weight:bold; text-align:center;' | "
if position then
if string.match(position, "^%[%[Liste") then
ret = ret .. "<div style='display:none;'>[[Vorlage:Infobox Chartplatzierungen/Wartung/POS verlinkt]]</div>"
end
if position == "1" or string.match(position, "^1%D") then
if numberonelink then
position = "[[" .. numberonelink .. "|1]]" .. (string.match(position, "1(.*)") or "")
if not parameters.Jahr then
position = position .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/NR1-Link]]</div>"
end
end
end
ret = ret .. position
end
ret = ret .. "\n| style='width:30%; font-size:smaller;' | " .. (entrydate or "")
ret = ret .. "\n| style='width:25%; text-align:right; padding-left:5px; font-size:smaller;' | "
if weeks then
if weeks == "" or weeks == "…" or weeks == "..." then
weeks = "…<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/vorläufig"
if year then
if tonumber(year) > 2009 then
weeks = weeks .. "/" .. year
end
end
weeks = weeks .. "]]</div>"
if weeks == "..." then
weeks = weeks .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Punkte]]</div>"
end
end
if string.match (weeks, "Mt") then
ret = ret .. "(" .. weeks .. ")"
else
ret = ret .. "(" .. weeks .. " Wo.)"
end
end
ret = ret .. "\n| style='width:10%; font-size:smaller;' | " .. (ref or "")
if string.match (parameters[1], "%a*<sup>%a*</sup>") then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Sup]]</div>"
elseif string.match (country, "[^%a%s]") then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Land falsch]]</div>"
elseif not countrycode then
if country ~= "DDR" then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Land unbekannt]]</div>"
end
end
if #entrydate < 4 or string.match (entrydate, "[^%d%./]") then
ret = ret .. "<div style='display:none'>[[Vorlage:Infobox Chartplatzierungen/Wartung/Datum falsch]]</div>"
end
return ret
end
-- Wechsel zwischen Chartplatzierungen-Zeile und Chartbox-Zeile - switch between chart positions table row and infobox row
p.chartrows = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
if parameters.Q then
return p.chartposrow(frame)
else
return p.chartinfoboxrow(frame)
end
end
-- AfM-Tabelle - table for certifications
p.certificationtable = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local entry = {}
for k, v in ipairs (parameters) do
entry [k] = v
end
local rows = 0
repeat
rows = rows + 1
local entry = "" .. rows
until not parameters[entry]
rows = rows - 1
local ret = frame:preprocess( "<templatestyles src='Vorlage:Charttabelle/styles.css' />" )
local statistics = parameters.Statistik
local main = parameters.Hauptartikel
local note = parameters.Hinweis
local source = parameters.Q
local nosilver = parameters.S
local nodiamond = parameters.D
local pagename = mw.title.getCurrentTitle().text
if statistics and not note and not main and not string.match (pagename, "/Auszeichnungen für Musikverkäufe") then
local pagenameroot = string.match ( pagename, "(.+)/Diskografie" ) or pagename
local certifications = pagenameroot .. "/Auszeichnungen für Musikverkäufe"
if mw.title.new( certifications ).exists == false then
ret = ret .. "\n<span style='font-style:italic;font-size:smaller;'>Anmerkung: Auszeichnungen in Ländern aus den Charttabellen sind in ebendiesen zu finden.</span>"
end
end
ret = ret .. "\n{| class='wikitable"
if statistics then
ret = ret .. " sortable charts-zebragrey'"
else
ret = ret .. " charts-zebragrey2'"
end
ret = ret .. "\n|- \n! style='width:250px;background-color:#FFEBAD;'| Welat/Herêm \n!"
if statistics then
if not nosilver then
ret = ret .. "style='background-color:#FFEBAD;' | [[Wêne:Silver record icon.svg|15px]] Zîv !! "
end
ret = ret .. "style='background-color:#FFEBAD;' | [[Wêne:Gold record icon.svg|15px]] Zêr !! "
ret = ret .. "style='background-color:#FFEBAD;' | [[Wêne:Platinum record icon.svg|15px]] Platîn"
if not nodiamond then
ret = ret .. " !! style='background-color:#FFEBAD;' | [[Wêne:Diamond record icon.svg|15px]] Almast"
end
else
ret = ret .. "style='width:150px;background-color:#FFEBAD;' | Xelat" .. (source or "")
end
ret = ret .. "\n! style='width:90px;background-color:#FFEBAD;' data-sort-type='number' | Firotin"
if statistics then
ret = ret .. "\n ! class='unsortable' style='background-color:#FFEBAD;' | Çavkanî"
end
-- single rows
ret = ret .. "\n|-"
for row = 1, rows do
ret = ret .. "\n" .. entry[row] .. "\n|-"
end
local silver = parameters.GesS
local gold = parameters.GesG
local platinum = parameters.GesP
local diamond = parameters.GesD
local number = parameters.GesZ
ret = ret .. "\n|-"
if statistics then
ret = ret .. "style='background:#FBF8D6;' class='sortbottom' \n| <b>Tevahî</b>"
if not nosilver then
ret = ret .. "\n| style='text-align:center;' | <b>" .. (silver or "—") .. "</b>"
end
ret = ret .. "\n| style='text-align:center;' | <b>" .. (gold or "—") .. "</b>"
ret = ret .. "\n| style='text-align:center;' | <b>" .. (platinum or "—") .. "</b>"
if not nodiamond then
ret = ret .. "\n| style='text-align:center;' | <b>" .. (diamond or "—") .. "</b>"
end
ret = ret .. "\n| colspan='2' |"
else
if number then
ret = ret .. "style='background:#FBF8D6;' \n| <i>Tevahî</i> \n| style='text-align:center; font-style:italic;' |"
if silver or gold or platinum or diamond then
if silver then
ret = ret .. "[[Wêne:Silver record icon.svg|15px]] " .. silver .. "× Zîv<br />"
end
if gold then
ret = ret .. "[[Wêne:Gold record icon.svg|15px]] " .. gold .. "× Zêr<br />"
end
if platinum then
ret = ret .. "[[Wêne:Platinum record icon.svg|15px]] " .. platinum .. "× Platîn<br />"
end
if diamond then
ret = ret .. "[[Wêne:Diamond record icon.svg|15px]] " .. diamond .. "× Almast<br />"
end
else
ret = ret .. "—"
end
ret = ret .. "\n| style='text-align:right; font-style:italic;' | <b>" .. number .. "</b>"
end
end
ret = ret .. "\n|}"
if main then
ret = ret .. "\n<span style='font-style:italic; font-size:smaller;'>Gotara Sereke: [[" .. main .. "]]</span>"
end
return ret
end
-- AfM2 - certification table rows
p.certificationtablerow = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local numbers = { "", "Double", "Triple", "Quadruple", "Quintuple", "Sextuple", "Septuple", "Octuple", "Nonuple" }
local silver = parameters.S
local gold = parameters.G
local platinum = parameters.P
local diamond = parameters.D
local source = parameters.Q
local country = parameters[1]
local certification = parameters[2]
local number = parameters[3]
local sum = parameters[4]
local ret = "| "
local countrycode = nil
local countryconv = frame:expandTemplate{ title = 'ISO3166-A3-Konversion', args = { country } }
if countrytable[country] then
countrycode = country
else
countrycode = countryconv
end
if countrytable[countrycode] then
ret = ret .. "{{"
if countrycode == "EUR2" then
ret = ret .. "EUR"
else
ret = ret .. countrycode
end
ret = ret .. "|" .. countrytable[countrycode][4] .. "|" .. countrytable[countrycode][1] .. " (" .. countrytable[countrycode][5] .. ")}}"
else
ret = ret .. country
end
if silver or gold or platinum or diamond then
local sum2 = parameters[2]
if silver ~= "n" then
ret = ret .. "\n| style='text-align:center;' |" .. (silver or "<span style='display:none;'>0!</span>—")
end
ret = ret .. "\n| style='text-align:center;' |" .. (gold or "<span style='display:none;'>0!</span>—")
ret = ret .. "\n| style='text-align:center;' |" .. (platinum or "<span style='display:none;'>0!</span>—")
if diamond ~= "n" then
ret = ret .. "\n| style='text-align:center;' |" .. (diamond or "<span style='display:none;'>0!</span>—")
end
ret = ret .. "\n| style='text-align:right;' |" .. (sum2 or "<span style='display:none;'>0!</span>—")
ret = ret .. "\n| " .. (source or "")
else
ret = ret .. (source or "") .. "\n| style='text-align:center;' | "
if certification == "" or certification == "-" or certification == "—" then
ret = ret .. "—"
elseif number == "" or number == "-" or number == "—" then
ret = ret .. certification or ""
elseif certification == "D+P" or certification == "P+D" then
ret = ret .. "[[Wêne:Diamond record icon.svg|15px]][[Wêne:Decuple platinum record icon.svg|15px]] " .. number .. "× Platîn"
else
-- explicitely avoiding links to non-existing files
if (certification == "S" or certification == "Zîv") and (tonumber(number) == 2 or tonumber(number) > 6) then
ret = ret .. "[[Wêne:Silver record icon.svg|15px]] "
else
if (certification == "D" or certification == "Almast") and tonumber(number) > 7 then
ret = ret .. "[[Wêne:Diamond record icon.svg|15px]] "
else
-- creating a valid file link in all cases images exist on Commons
ret = ret .. "[[Wêne:"
if tonumber(number) > 1 then
if tonumber(number) > 9 then
ret = ret .. "Decuple "
else
ret = ret .. numbers[tonumber(number)] .. " "
end
end
if certtable[certification][1] then
ret = ret .. certtable[certification][1] .. " "
end
ret = ret .. "record icon.svg|15px]] "
end
end
if tonumber(number) > 1 then
ret = ret .. number .. "× "
end
if certtable[certification][2] then
ret = ret .. certtable[certification][2]
else
ret = ret .. certification
end
end
ret = ret .. "\n| style='text-align:right;' | " .. (sum or "")
end
return frame:preprocess (ret)
end
-- AfM - inline certification
p.certification = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local certification = parameters[1]
local number = parameters[2]
local sum = parameters[3]
local numbers = { "", "Double", "Triple", "Quadruple", "Quintuple", "Sextuple", "Septuple", "Octuple", "Nonuple" }
local ret = ""
if certification == "D+P" or certification == "P+D" then
ret = ret .. "[[Wêne:Diamond record icon.svg|15px]][[Wêne:Decuple platinum record icon.svg|15px]] " .. number .. "× Platîn"
elseif certification == "G+P" or certification == "P+G" then
ret = ret .. "[[Wêne:" .. certtable[certification][1] .. " record icon.svg|15px]] " .. certtable[certification][2]
else
ret = ret .. "[[Wêne:"
if tonumber(number) > 1 then
if tonumber(number) > 9 then
ret = ret .. "Decuple "
else
ret = ret .. numbers[tonumber(number)] .. " "
end
end
if certtable[certification] then
ret = ret .. certtable[certification][1] .. " "
end
ret = ret .. "record icon.svg|15px]] "
if tonumber(number) > 1 then
ret = ret .. number .. "× "
end
if certtable[certification] then
ret = ret .. certtable[certification][2]
else
ret = ret .. certification
end
end
if sum then
ret = ret .. " (" .. sum .."+)"
end
return frame:preprocess (ret)
end
-- Wechsel zwischen AfM/AfM2 - switch between certificationtablerow and certification
p.certifications = function (frame)
local parameters = frame.args
if not parameters[1] then parameters = mw.getCurrentFrame():getParent().args end
local ID = parameters[1]
if certtable[ID] then
return p.certification(frame)
else
return p.certificationtablerow(frame)
end
end
return p