وحدة:بطاقة/قالب/عامة

من أرابيكا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

local generic = require("وحدة:بطاقة/أدوات")
local localdata = require 'وحدة:بطاقة/بيانات'
local building = require 'وحدة:بطاقة/أدوات/مبنى'
local org = require 'وحدة:بطاقة/أدوات/منظمة'

local itemId 
if (localdata.item) then itemId = localdata.item.id end

local page = { -- بيانات حول الصفحة التي ستعرض عليها البطاقة 
	name = mw.title.getCurrentTitle().prefixedText,
	namespace =  mw.title.getCurrentTitle().namespace
}
local property_blacklist = {
    'P360', --is a list of
    'P4224', --category contains
    'P935', -- Commons gallery
    'P1472', -- Commons Creator page
    'P1612', -- Commons Institution page
    'P373', -- Commons category
    'P3722', -- Commons maps category
    'P1151', -- topic's main Wikimedia portal
    'P1424', -- topic's main template
    'P910', -- topic's main category
    'P1200', -- bodies of water basin category
    'P1792', -- category of associated people
    'P1464', -- category for people born here
    'P1465', -- category for people who died here
    'P1791', -- category of people buried here
    'P1740', -- category for films shot at this location
    'P2033', -- Category for pictures taken with camera
    'P2517', -- category for recipients of this award
    'P4195', -- category for employees of the organization
    'P1754', -- category related to list
    'P301', -- category's main topic
    'P971', -- category combines topics
    'P3876', -- category for alumni of educational institution
    'P1753', -- list related to category
    'P3921', -- Wikidata SPARQL query equivalent
    'P1204', -- Wikimedia portal's main topic
    'P1423', -- template's main topic
    'P1709', -- equivalent class
    'P3950', -- narrower external class
    'P2888', -- exact match
    'P1382', -- coincident with
     -- 'P527', -- has part
    'P2670', -- has parts of the class
    'P3113', -- does not have part
    'P2737', -- union of
    'P2738', -- disjoint union of
    'P2445', -- metasubclass of
    'P1963', -- properties for this type
    'P3176', -- uses property
    'P1889', -- different from
    'P460', -- said to be the same as
    'P2959', -- permanent duplicated item
    'P2860', -- cites
    'P5125', -- wikimedia outline
    'P5008', -- on focus list of Wikimedia project
    'P2559', -- Wikidata usage instructions
    'P1343', -- described by source
    'P972', --  catalogu
    'P1282', -- OSM tag or key
    'P7561', --   category for the interior of the item 
    'P6363', --WordLift URL
    'P2354', --has list
    'P1687', --Wikidata propert
    'P4316', -- kinship equivalent in SPARQL at Wikidata
    'P8687', --social media followers
    'P1482', --Stack Exchange tag
    'P487', --Unicode character
    'P8933', --category for the view from the item
    'P7867', --category for maps
    'P7084', --related category
    'P3096', --KML file
    'P1019', --web feed URL
    'P6104',-- maintained by WikiProject
  -- from module:Taxonbar
	'P4301' , --نباتات لمستقبل ما (PfaF)
	'P4194' , --نباتات كاليفورنيا الأصيلة النادرة والمهددة بالانقراض (CNPS)
	'P4024' , --موقع تنوع الحيوانات (ADW)
	'P3746' , --الزهور البرية في إسرائيل
	'P3606' , --أنظمة بولد (BOLD)
	'P3594' , --موقع آرينيه (Araneae)
	'P3591' , --قائمة التحقق العالمية لفصائل النباتات المُختارة (WCSPF)
	'P3459' , --رقم أرنغ (Euring)
	'P3444' , --المرصد الرقمي للطيور (eBird)
	'P3420' , -- كلفلورا (Calflora)
	'P3405' , --سجل الأنواع الهولندية (NSR)
	'P3322' , --جمعية الفراشات (Vlindernet)
	'P3288' , --دليل عناكب العالم (WSC)
	'P3240' , --الشبكة الوطنية للتنوع الحيوي (NBN)
	'P3186' , --دليل الأصنوفة المرجعي(TAXREF)
	'P3151' , --أنا عالم طبيعة (iNaturalist)
	'P3105' , --جمعية تيلا بوتانيكا (Tela-botanica)
	'P3102' , --قاعدة بيانات بلنتاريوم (Plantarium)
	'P3101' , --الحياة النباتية (FloraBase)
	'P3100' , --الحياة النباتية في أستراليا (FoA)
	'P3099' , --مجموعة أنواع الطيور على الإنترنت (IBC)
	'P3088' , --فهرس الكائنات الحية في تايوان (TaiBNET)
	'P3064' , --فهرس حرشفيات الأجنحة (LepIndex)
	'P3060' , --فراشات العالم وعثثه (ButMoth)
	'P2946' , --قاعدة بيانات تنوع الجراثيم (BacDive)
	'P2833' , --قاعدة بيانات أركيف (ARKive)
	'P2809' , --الأطلس الأسترالي لحبوب اللقاح والأبواغ (APSA)
	'P2794' , --فهرس هباتكارم (IHND)
	'P2752' , --سجل الأحياء في نيوزيلندا (NZOR)
	'P2464' , --شبكة دليل الحشرات (BugGuide)
	'P2455' , --ملف الأنواع والتهديدات (SPRAT)
	'P2434' , --الحياة النباتية في القطب الجنوبي (PAF)
	'P2426' , --قاعدة بيانات زينوكانتو (Xeno-canto)
	'P2040' , --قاعدة بيانات سايتس للأنواع (CITES)
	'P2036' , --قاعدة بيانات النباتات في إفريقيا (APDB )
	'P2026' , --قاعدة بيانات أفباس (Avibase)
	'P2024' , --سلالة ماشية ألمانية (Rasseschlüssel)
	'P1992' , -- موقع بلزي (Plazi)
	'P1991' , --قائمة أسماء بدائيات النوى (LPSN)
	'P1940' , --قاعدة بيانات عاريات البذور (conifers)
	'P1939' , --قاعدة بيانات  "دنتكسا" (Dyntaxa)
	'P1895' , --الحياة البرية في أوروبا (EU Nomen)
	'P1832' , --قاعدة بيانات الأعشاب (GrassBase)
	'P1772' , --قاعدة بيانات نباتات وزارة الزراعة الأمريكية (USDA)
	'P1761' , --مُعرِّف فصيلة في موقع وطسون ودليتز (W&Df)
	'P1747' , --الحياة النباتية في الصين (FOC)
	'P1746' , --مستودع كلمات حدائق الحيوان (ZooBank)
	'P1745' , --قاعدة بيانات النباتات الوعائية في كندا (VASCAN)
	'P1744' , --قائمة تدقيق أغاسيز (Agassiz)
	'P1743' , --قائمة تدقيق برادلي و فليتشر
	'P1727' , --مُعرِّف الحياة النباتية في أمريكا الشمالية (FNA)
	'P1421' , --شبكة معلومات الموارد الوراثية (GRIN)
	'P1391' , --فهرس فنغورم (Fungorum)
	'P1348' , --قاعدة بيانات الطحالب (AlgaeBase)
	'P1076' , --اللجنة الدولية لتصنيف الفيروسات (ICTV)
	'P1070' , --قاعدة بيانات قائمة النباتات (PlantList)
	'P962' , --مستودع كلمات علم الفطريات (MycoBank)
	'P961' , --الفهرس الدولي لأسماء النباتات (IPNI)
	'P960' , --قاعدة بيانات تربيكوس (Tropicos)
	'P959' , --أنواع ثدييات العالم (MSW)
	'P938' , --قاعدة بيانات السُّموك (FishBase)
	'P850' , --السجل الدَّولي للأنواع البحرية (WoRMS)
	'P846' , --المَرفَق العالمي لمعلومات التنوع الحيوي (GBIF)
	'P842' , --أعمال المستحاثات (Fossilworks)
	'P838' , --مكتبة علم الأحياء (BioLib)
	'P830' , --موسوعة الحياة (EoL)
	'P815' , --نظام معلومات التصنيف المتكامل (ITIS TSN)
	'P687' , --مكتبة تراث التنوع الحيوي (BHL)
	'P685' , --المركز الوطني الأمريكي لمعلومات التقانة الحيوية (NCBI)'
	'P3896', --geoshape
}

local property2function = {
	P856 = generic.website,
	P166 = generic.awards,
	P1451 = generic.motto,
	P625 = generic.coordinates,
	P2044 = building.elevation,
	P1329 = building.phone_number,
	P3025 = building.open_days,
	P366 = building.usage,
	--P186 = building.material,
	P1174 = building.visitors,
	P793 = building.significantEvent,
	P159 = org.headquarters,
    P953 = generic.website({label='العمل الكامل مُتوفِّر في',property='P953',value = {"P953"},}),
    P1581 = generic.blog,
	
	P2048 = {type = "row",label = "الارتفاع",wikidata = {wikimod = "Wikidata.Ca",property = "P2048",qualifier = "P1013",colformat0 = "unit",formatting = "table",conjunction = "<br />",rowformat = "$0$R0 $1",rowsubformat1 = "<small><br />($1)</small>",}, },
	P2610 = {type = "row",label = "العمق",wikidata = {wikimod = "Wikidata.Ca",property = "P2610",formatting = "unit"}, },
	P2043 = {type = "row",label = "الطول",wikidata = {wikimod = "Wikidata.Ca",property = "P2043",formatting = "unit"}, },
	P2049 = {type = "row",label = "العرض",wikidata = {wikimod = "Wikidata.Ca",property = "P2049",formatting = "unit"}, },
	P2386 = {type = "row",label = "القطر",wikidata = {wikimod = "Wikidata.Ca",property = "P2386",formatting = "unit"}, },
	P2547 = {type = "row",label = "المحيط",wikidata = {wikimod = "Wikidata.Ca",property = "P2547",formatting = "unit"}, },
	P2046 = {type = "row",label = "المساحة",wikidata = {wikimod = "Wikidata.Ca",property = "P2046",formatting = "table",conjunction = "<br />",qualifier = "P518",rowformat = "$0$R0 $1",rowsubformat1 = "<small>($1)</small>",colformat0 = "unit"}, },
	P2234 = {type = "row",label = "الحجم",wikidata = {wikimod = "Wikidata.Ca",property = "P2234",formatting = "unit"},},	
	
	--P577 = {type = "row",label = "تاريخ النشر",wikidata = {wikimod = "Wikidata.Ca",property = "P577"},},	
}
function valuesToKeys(array)
	local result = {}
	for _, v in pairs(array) do
		result[v] = true
	end
	return result
end

function generator()
   local parts = {
        generic.title(),
        generic.logo(),
        generic.mainimage({wikidata = {property = {"P18", "P3383", "P2716", "P10",'P5775'}}}),
        generic.geoloc(),
   }
   --if(page and page.namespace ~= 0 ) then return parts end
   if(type(itemId) == 'nil') then return parts end
   
   local ginfo = 	{type = 'table' , title ='معلومات عامة' ,rows = {}}
   local lines = {}
   
   local item = mw.wikibase.getEntity(itemId)
    local properties = mw.wikibase.orderProperties(item:getProperties())
    local property_blacklist_hash = valuesToKeys(property_blacklist)
    property_blacklist_hash['P31'] = true --Special property
    property_blacklist_hash['P155'] = true --Special property
    property_blacklist_hash['P156'] = true --Special property

    for _, property in pairs(properties) do
        local datatype = item.claims[property][1].mainsnak.datatype
        
        --mw.log("prop:"..property.." >datatype :"..datatype)
        
        if (property2function[property])
        	then table.insert(ginfo.rows,property2function[property] )
        elseif datatype ~= 'commonsMedia' 
              and datatype ~= 'external-id' 
              --and datatype ~= 'quantity' 
              and not property_blacklist_hash[property]  then
        		local propertyValue = item:formatStatements(property)
        		local datarow = {type = 'row' , 
							label = propertyValue.label, 
							value = property,
							wikidata={
								property=property, formatting='table',
								rowformat = '$0$R0',
								showDate = "true",
								listrank = "bestrank",
								conjunction = "<br>", listmax=3
							}}
				if datatype == 'quantity' then datarow.wikidata.colformat0='unit' end
				if datatype == 'time' then datarow.wikidata.showDate=nil end
				if datatype == 'monolingualtext' then 
					datarow.wikidata.rowformat='{{$0}} $R0'
					datarow.wikidata.colformat0='Text with Language icon|Text=$text|Lang=$language|NoCat=y' 
				end
				table.insert(ginfo.rows, datarow)
        end
    end
    if(#ginfo.rows>0) then 
    	table.insert(parts,ginfo) 
		table.insert(parts,{type = 'navbox', previousproperty = "P155",nextproperty = "P156"})
    end
    return parts
end

return {
    description = "بطاقة تجمع بيانات عامة حول المقالة",
    maincolor = "#CEDEFF", -- اللون المستعمل لعنوان البطاقة
    wikimod = "Wikidata.Ca",
    parts = generator()
}