وحدة:ب.ص.م/بطاقة/حكومة

هذه الصفحة شرح لوحدة من وحدات البطاقات المبنية اعتمادا على وحدة:ب.ص.م. وتستعمل في {{بطاقة حكومة}}.

local generic = require( 'وحدة:ب.ص.م/أدوات' )
local localdata = require 'وحدة:ب.ص.م/بيانات'
local datef = require 'وحدة:Date'
local wd = require('وحدة:Wikidata.Ca')

xDate = require('Module:Date')._Date

local function getSnak(statement, snaks)
	local ret = statement
	for i, v in ipairs(snaks) do
		if not ret then return end
		ret = ret[v]
	end
	return ret
end
local function getBestValue(id, prop)
		local snak_value = getSnak(mw.wikibase.getBestStatements(id, prop), {1, "mainsnak", "datavalue", "value"})
		return snak_value
end

local dStart = localdata['البداية']
				or localdata['بداية']
				or localdata['date_formed']
if(not dStart and localdata.item )	then
				dStart = wd.claim({ property = 'P571', item = localdata.item.id,editicon='false',formatting='c'})
				or wd.claim({ property = 'P580', item = localdata.item.id,editicon='false',formatting='c'})
end
local dEnd = localdata['النهاية'] or localdata['نهاية']  or localdata['date_dissolved'] 
if(not dEnd and localdata.item )	then 
				dEnd = wd.claim({ property = 'P576', item = localdata.item.id,editicon='false',formatting='c'})
				or wd.claim({ property = 'P582', item = localdata.item.id,editicon='false',formatting='c'})
end
local dStartCat, dEndCat
if(localdata.item and getSnak(localdata.item,{'claims','P571',1, "mainsnak", "datavalue", "value"})) 
    then    dStartCat = '[[تصنيف:صفحات_تستخدم_خاصية_' .. 'P571' .. ']]'
elseif(localdata.item and getSnak(localdata.item,{'claims','P580',1, "mainsnak", "datavalue", "value"}))
	then 	dStartCat = '[[تصنيف:صفحات_تستخدم_خاصية_' .. 'P580' .. ']]'
	else    dStartCat = ''
end
if(localdata.item and getSnak(localdata.item,{'claims','P576',1, "mainsnak", "datavalue", "value"})) 
    then    dEndCat = '[[تصنيف:صفحات_تستخدم_خاصية_' .. 'P576' .. ']]'
elseif(localdata.item and getSnak(localdata.item,{'claims','P582',1, "mainsnak", "datavalue", "value"}))
	then 	dEndCat = '[[تصنيف:صفحات_تستخدم_خاصية_' .. 'P582' .. ']]'
	else    dEndCat = ''
end

return {
	parts = {
		generic.title(),
		{type = 'subtitle', value = {'بلد'}, wikidata= {property = 'P31'}},
		
		generic.mainimage(),
		{type='table', title = 'معلومات عامة', rows = {
			{ type = 'row', label = '[[نظام الحكم]]', value = {'نظام الحكم','النظام'},    },
			{ type = 'row'
				, label = {'تسمية رأس الدولة'	,'عنوان رئيس الدولة'} 
				, defaultlabel = 'قائد الدولة'
				, value = {'رأس الدولة','state_head'}
				,  property = 'P35'},
			{ type = 'row'
				, label = { 'عنوان القائد', 'تسمية رأس الحكومة'	}
				, defaultlabel = 'رئيس الحكومة'
				, value = {'رئيس الحكومة','قائد','government_head'}
				, property = 'P6'},
			{ type = 'row', label = 'الانتخاب', value = {'الانتخاب'}, property = 'P2715'},
			{ type = 'row', label = 'الهيئة التشريعية', value = {'الهيئة التشريعية'}, property = 'P2937'},
			{ type = 'row', label = 'التكوين' 
				, value = {'date_formed', 'البداية' ,'بداية'}
				, wikidata = function ( item ) 
						local rep1 = wd.claim({ property = 'P571', item = item.id})
							or wd.claim({ property = 'P580', item = item.id})
						if(dStartCat  ~= nil and rep1 ~= nil)
							 then rep1= rep1..dStartCat
						end
						return rep1
				end
			},
			{ type = 'row', label = 'النهاية'  
			  ,value = {'النهاية'	,'نهاية'  ,'date_dissolved'}
			  ,wikidata = function ( item ) --, value = 
					local rep1 = wd.claim({ property = 'P576', item = item.id})
						or wd.claim({ property = 'P582', item = item.id})
					if(dEndCat  ~= nil and rep1 ~= nil)
						 then rep1= rep1..dEndCat
					end
					return rep1
				end
			},
			{ type = 'row', label = 'المدة',   value = function ( localdata ) 
				if(dStart == nil) then return nil; end
				local t1,date1 = datef.separationJourMoisAnnee(dStart)
				if(not t1) then return nil end
				if(dEnd) then
					local t2,date2 = datef.separationJourMoisAnnee(dEnd)
					if(t2) then 
						return require( 'وحدة:مدة' )._duree( {date1.jour, date1.numMois,date1.annee  
						, date2.jour, date2.numMois,date2.annee})
					end
				end 
				return require( 'وحدة:مدة' )._duree({ date1.jour, date1.numMois,date1.annee   })
			end
			, property = 'P2047'
			}
		}},
		{type = 'table', title ='التركيبة الأساسية', rows = {
			{ type = 'row', label = '[[حكومة ائتلافية|الأحزاب]]', value = {'الائتلاف','ائتلاف'}},
			{ type = 'row', label = '[[ حكومة وحدة وطنية |وحدة]]', value = {'وحدة'}},
			{ type = 'row', label = 'الوزراء', value = {'الوزراء'}},
			{ type = 'row', label = 'كتاب الدولة', value = {'كتاب الدولة'}},
			{ type = 'row', label = 'رجال',	value = {'رجال'},  property = 'P1540'},
			{ type = 'row', label = 'نساء',	value = {'نساء'},  property = 'P1539'},
			{ type = 'row',  label = 'متوسط العمر', value = {'متوسط العمر'} },
		}},
		{type = 'table', title ='التمثيل', rows = {
			{ type = 'row', label = localdata['البرلمان'] or 'الأغلبية', value = {'المقاعد','مقاعد'}},
			{ type = 'row', label = localdata['البرلمان2'] or 'الأغلبية', value = {'المقاعد2'}},
			{ type = 'row', label = localdata['البرلمان3'] or 'الأغلبية', value = {'المقاعد3'}},
			{ type = 'row', label = localdata['البرلمان4'] or 'الأغلبية', value = {'المقاعد4'}},
			{ type = 'row', label = localdata['البرلمان5'] or 'الأغلبية', value = {'المقاعد5'}},
			{ type = 'row', label = 'المعارضة', value = {'المعارضة'}}
		}},
		generic.logo(),
		{type = 'table', rows = {
			{type = 'succession'
				,previousparameter = {"الحكومة السابقة",'السابقة'}
				,previousproperty = "P155"
				,nextparameter = {"الحكومة اللاحقة",'اللاحقة'}
				,nextproperty = "P156"
			}
		}}
}}