Modul:Wikidata/Medals
Bu modulun sənədləşdirmə səhifəsi Modul:Wikidata/Medals/doc səhifəsində yaradıla bilər
local WDS = require('Module:WikidataSelectors')local moduleDate = require('Module:Wikidata/date')local awardsOrder = mw.ext.data.get("Wikidata/awards order.tab")local p = {}local config = { -- Bura həm medalı, həm də fəxri adı olan Vikiverilənlər elementləri -- İkisi də əlavə edildikdə həmin mükafatın iki dəfə göstərilməsinin qarşısını alır absorption = { Q16675272 = 'Q654471', -- "Qızıl ulduz" medalı = RF Qəhrəmanı Q16481808 = 'Q8706404', -- "RF Əmək Qəhrəmanı" medalı = RF Əmək Qəhrəmanı Q1948730 = 'Q178473', -- "Qızıl Ulduz" medalı (SSRİ) = Sovet İttifaqı Qəhrəmanı Q1980962 = 'Q208167', -- "Oraq və Çəkic" medalı = Sosialist Əməyi Qəhrəmanı Q2032399 = 'Q2046996', -- "Qızıl ulduz" medalı = Azərbaycanın Milli Qəhrəmanı Q102183407 = 'Q103819965', -- "Vətən Müharibəsi Qəhrəmanı" medalı = Vətən Müharibəsi Qəhrəmanı Q1262166 = 'Q80589', -- "Xalq Qəhrəmanı" ordeni = Yuqoslaviyanın Xalq Qəhrəmanı Q749849 = 'Q1358055', -- "Qızıl ulduz" ordeni = Ukrayna Qəhrəmanı Q4335914 = 'Q1358055', -- "Dövlət" ordeni = Ukrayna Qəhrəmanı Q4287121 = 'Q4137462', -- "Altın ay" medalı = Türkmənistan Qəhrəmanı }}-- Həm piktoqramı (P2910), həm də lenti (P2425) olan mükafatlarda piktoqramı əsas götürülənlər:local prioritizeP2910 = { "Q2046996", -- Azərbaycanın Milli Qəhrəmanı "Q1358055", -- Ukrayna Qəhrəmanı "Q28975206", -- 3-cü dərəcəli "Şaxtaçı şöhrəti" döş nişanı "Q28975205", -- 2-ci dərəcəli "Şaxtaçı şöhrəti" döş nişanı "Q28975203", -- 1-ci dərəcəli "Şaxtaçı şöhrəti" döş nişanı}local function getImageFromClaims(claims, property) local imageClaims = WDS.filter(claims, property) if imageClaims and #imageClaims then for i, claim in pairs(imageClaims) do if claim.type == 'statement' and claim.mainsnak.snaktype == 'value' then return claim.mainsnak.datavalue.value end end end return nilendlocal function isPrioritizedQItem(entityId) for _, qItem in ipairs(prioritizeP2910) do if entityId == qItem then return true end end return falseendlocal function getPrioritizedImage(entity) local claims = entity.claims local image, size, border = nil, 'x15px', false local entityId = entity.id if isPrioritizedQItem(entityId) then image = getImageFromClaims(claims, 'P2910') if image then size = 'x37px' else image = getImageFromClaims(claims, 'P2425') if image then border = true end end else image = getImageFromClaims(claims, 'P2425') if image then border = true else image = getImageFromClaims(claims, 'P2910') if image then size = 'x37px' end end end return image, size, borderendfunction p.formatProperty(context, options) if not context then error('context not specified'); end if not options then error('options not specified'); end if not options.entity then error('options.entity missing'); end local claims if options.property then claims = context.selectClaims(options, options.property) end if claims == nil then return '' end local formattedData = {} for i, claim in ipairs(claims) do if claim.mainsnak and claim.mainsnak.datavalue and claim.mainsnak.datavalue.type == 'wikibase-entityid' then local valueId = claim.mainsnak.datavalue.value.id local formattedStatement = context.formatStatement(options, claim) if formattedStatement and formattedStatement ~= '' then formattedStatement = '<span class="wikidata-claim" data-wikidata-property-id="' .. string.upper(options.property) .. '" data-wikidata-claim-id="' .. claim.id .. '">' .. formattedStatement .. '</span>' table.insert(formattedData, { id = valueId, html = formattedStatement, }) end end end for i, awardData in ipairs(formattedData) do local isAbsorptionFound = false if config.absorption[awardData.id] then local absorptionAwardId = config.absorption[awardData.id] for _, absorptionAwardData in ipairs(formattedData) do if absorptionAwardData.id == absorptionAwardId then isAbsorptionFound = true break end end end if isAbsorptionFound then table.remove(formattedData, i) end end local orderedData = {} local lastValue if type(awardsOrder) == 'table' then for i, awardFields in ipairs(awardsOrder.data) do local awardOrder = awardFields[1] if awardOrder == '-' then if lastValue ~= '-' then table.insert(orderedData, '<br>') lastHeight = nil end else for k, awardData in ipairs(formattedData) do if awardOrder == awardData.id and not awardData.used then table.insert(orderedData, awardData.html) formattedData[k].used = true end end end end end for i, awardData in ipairs(formattedData) do if not awardData.used then table.insert(orderedData, awardData.html) end end local lastHeight for i, awardHtml in ipairs(orderedData) do local height = mw.ustring.match(awardHtml, 'x%d+px') if height and lastHeight and height ~= lastHeight then table.insert(orderedData, i, '<br>') end lastHeight = height end local out = mw.text.listToText(orderedData, options.separator, options.conjunction) if out ~= '' then if options.before then out = options.before .. out end if options.after then out = out .. options.after end end return outendfunction p.getImageFromEntity(entityOrId, actualDate) local entity = type(entityOrId) == "string" and mw.wikibase.getEntity(entityOrId) or entityOrId local image, size, border = getPrioritizedImage(entity) return image, size, borderendfunction p.formatValue(context, options, statement) local entityId = statement.id if not entityId then return statement end local entity = mw.wikibase.getEntity(entityId) local label = entity:getLabel() local image, size, border = p.getImageFromEntity(entity) local recipientCategory = '' if not options.nocat and options.nocat ~= '' then recipientCategory = context.extractCategory({ category = 'P7084[P4224:Q24571879]' }, entity) if recipientCategory == '' then recipientCategory = context.extractCategory({ category = 'P2517' }, entity) end end if options.qualifiers then if options.qualifiers.P27 then for _, claim in ipairs(options.qualifiers.P27) do if claim and claim.datavalue and claim.datavalue.value and claim.datavalue.value.id then recipientCategory = recipientCategory .. context.extractCategory( { category = 'P7084[P27:' .. claim.datavalue.value.id .. ']' }, entity) end end end end if image then local link = mw.wikibase.getSitelink(entityId) local out = '[[Fayl:' .. image if border == true then out = out .. '|border' end out = out .. '|' .. size .. '|link=' if not link then local partOfClaims = WDS.filter(entity.claims, 'P361') if not partOfClaims or #partOfClaims == 0 then partOfClaims = WDS.filter(entity.claims, 'P279') end if partOfClaims and #partOfClaims then for i, claim in pairs(partOfClaims) do if claim.type == 'statement' and claim.mainsnak.snaktype == 'value' then link = mw.wikibase.getSitelink(claim.mainsnak.datavalue.value.id) if link then break end end end end end if link then out = out .. link .. '|' .. label else out = out .. 'd:' .. entityId end if label then out = out .. '|' .. label end out = out .. ']]' out = out .. recipientCategory return out else return nil end local out = context.formatValueDefault(context, options, statement) if out and out ~= '' then return '<span style="display:inline-block; text-align:left">' .. out .. recipientCategory .. '</span>' end return ''endreturn p
🔥 Top keywords: Ana səhifəUEFA Avro 2024Qurban bayramıMübariz İbrahimovBayram namazıXüsusi:AxtarXüsusi:SonDəyişikliklərAzərbaycanFayl:Jön Türk Komitesi 1909.jpg1980-ci illər Azərbaycan filmlərinin siyahısıAzərbaycan əlifbasıUEFA Avropa ÇempionatıMirkazım KazımovHeydər ƏliyevKateqoriya:Əlifba sırasına görə futbolçularHəkimlər GünüSəhiyyə İşçiləri GünüAzərbaycanın dövlət bayramları və xüsusi günləriKateqoriya:Kişi adlarıBakı17 iyunMorze əlifbasıKarles Puçdemon18 iyunƏlifbaİlham ƏliyevQarabağ UniversitetiGənc türklərÖlkə paytaxtlarının siyahısıİslamda oral seksXəzər dəniziMəhəmmədVasif MəmmədzadəRumıniyaNiyaməddin MusayevAvstriyaAzərbaycanın inzibati bölgüsüFayl:A. F. Lydon Robinson Crusoe Plate 03 (1865).JPGUEFA Avro 2020