وحدة:بطاقة/أدوات/مبنى

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
توثيق الوحدة[أنشئ] [استخدامات] [قوالب]
يمكن إنشاء توثيق الوحدة في صفحة الشرح
local p = {}
local localdata = require( 'وحدة:بطاقة/بيانات' )
local item = localdata.item

local general = require "وحدة:بطاقة/أدوات"

local WD = require "Module:Wikidata.Ca"

local function keyDate(event)
	if type(event) == 'table' then
		for i, j in pairs(event) do
			local s = keyDate(j)
			if s then
				return s
			end
		end
	elseif type(event) ~= 'string' then
		 return error('invalid-datatype !! ' .. type(event) .. ' != string')
	elseif string.sub(event, 1, 1) == 'Q' then
		return WD.claim{property='P793', qualifier='P518', formatting='table'
                      , conjunction='<br />' , rowformat='$1' , whitelist0=event ,query='num'}

	elseif string.sub(event, 1, 1) == 'P'  then 
		return WD.claim{property=event, query='num'}
	else
		return error('invalid-entity-id : ' .. event)
	end
end

function p.showDate(prop, params)
    params = (type(params) == 'table' and params) or {}
    if type(prop) ~= 'string' then
		 return nil,error('invalid-datatype property!! ' .. type(prop) .. ' != string')
	elseif string.sub(prop, 1, 1) == 'P'  then 
       params.wikimod = 'Wikidata.Ca'
       params.property= prop
       params.formatting='table'
       params.qualifier2='P580'
       params.qualifier3='P582'
       params.qualifier4='P585'
       params.colformat2='Y'
       params.colformat3='Y'
       params.colformat4='Y'
       params.qualifier ='P580 or P582'
       params.rowsubformat1='<small>($2 – $3)</small>'
       params.rowsubformat4='<small>($4)</small>'
       params.rowformat = '$0$R0 $1$4'

       return params
    else return nil,error('invalid-dataformat property!! ' .. prop)
    end
end

local showDate = p.showDate

function p.title()
	return general.title()
end

--Image
function p.mainimage()
	return general.mainimage()
end

function p.country()
	return {type = 'row' 
			, label = 'البلد'
			, value = {'دولة','بلد','country'}
			, wikidata = {
				wikimod = 'Wikidata.Ca',
				property='P17' , formatting='table',
				rowformat='{{flag|$0}}$R0', colformat0='label' 
			}
        }
end

function p.historicalregion()
	return {
		type = 'row', -- بالنسبة للمناطق التاريخية
		value = 'منطقة',
		label = localdata['اسم المنطقة'] or 'المنطقة',
	}
end

function p.adminlocation()

	return {
		type = 'multi', 
		rows = {
			p.country(),
			p.historicalregion(),
			{
				type = 'row', 
				value = {'subdivision_name1', 'subdivision1', 'اسم المنطقة 1'},
				label = localdata['subdivision_type1'] or localdata['نوع المنطقة 1'] or 'المنطقة 1'
			},
			{
				type = 'row', 
				value = {'subdivision_name2', 'subdivision2', 'اسم المنطقة 2'},
				label = localdata['subdivision_type2'] or localdata['نوع المنطقة 2'] or 'المنطقة 2'
			},
			{
				type = 'row', 
				value = {'subdivision_name3', 'subdivision3', 'اسم المنطقة 3'},
				label = localdata['subdivision_type3'] or localdata['نوع المنطقة 3'] or 'المنطقة 3'
			},
			{
				type = 'row',
				value = {'عنوان','address'},
				label = 'العنوان',
				wikidata = {wikimod = 'Wikidata.Ca', property='P6375', list = 2, conjunction = "<br />"
                    ,formatting = '$text {{Language icon|NoCat=y|$language}}'}
			},
		}
	}
end

function p.onshoreof()
	return {
		type = 'row',
		label = 'على ضفاف',
		value = {'baigné par', 'على ضفاف'},
		wikidata = {property = 'P206'},
	}
end

function p.watershed()
	return {
		type = 'row',
		label = 'مستجمع مائي',
		value = 'مستجمع مائي',
		wikidata = {property = 'P4614'},
	}
end

function p.protectedarea()
	return {
		type = 'row',
		label = 'منطقة محمية',
		plurallabel = 'مناطق محمية',
		value = {'منطقة محمية', 'protected_area'},
		wikidata = {property = 'P3018'},
	}
end

function p.island()
	return {
		type = 'row',
		label = 'جزيرة',
		plurallabel = 'جزر',
		value = {'جزيرة','island'},
		property = 'P5130',
	}
end

function p.mountainrange()
	return {
		type = 'row',
		label = 'السلسلة الجبلية',
		plurallabel = 'السلاسل الجبلية',
		value = {'جبل', 'سلسلة جبلية','mountain_range'},
		wikidata = {property = 'P4552'},
	}
end

function p.elevation()
	return {
		type = 'row',
		label = 'الارتفاع',
		value = {'ارتفاع','elevation'},
		wikidata = {wikimod = 'Wikidata.Ca', property = 'P2044', formatting='unitlinked'},
	}
end

function p.coordinates(args)
	return general.coordinates(args)
end

function p.website(localparam) 
	return general.website(localparam)
end

function p.cornerstonelaying()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = {'حجر_الأساس','broke_ground','broke ground'},
				label = 'حجر الأساس',
				wikidata = keyDate('Q18752057')
			}
		}
	}
end

function p.construction()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = {'بداية التشييد', 'بداية'},
				label = 'التشييد',  
				wikidata = keyDate{'Q385378', 'P580'}
			},
			{
				type = 'row',
				value = {'نهاية التشييد', 'نهاية'}, 
				label = 'نهاية التشييد',  
				wikidata = keyDate{'Q385378', 'P582'}
			},
			{
				type = 'row',
				value = {'تشييد', 'التشييد', 'التشييد'}, 
				label = 'التشييد', 
				wikidata = keyDate{'Q385378', 'P571'}
			},
		}
	}

end

function p.reconstruction()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = {'بداية إعادة التشييد', 'بداية'}, 
				label = 'بداية إعادة التشييد', 
			},
			{
				type = 'row',
				value = {'نهاية إعادة التشييد', 'نهاية'}, 
				label = 'نهاية إعادة التشييد', 
			},
			{
				type = 'row',
				value = {'إعادة التشييد', 'تاريخ إعادة التشييد'}, 
				label = 'إعادة التشييد', 
				wikidata = keyDate('Q1370468')
			},
		}
	}

end

function p.opening()  --ouverture / consécration / date de mise en service (!= date de construction)
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row', 
				value =  {"تاريخ الافتتاح", "تاريخ_الافتتاح",'opened'}, 
				label = 'الافتتاح', 
				blockers = 'افتتاح', 
				wikidata = keyDate{'P1619', 'Q15051339'} -- P1619 = ouverture officielle, pas ouverture de facto
			},
			{
				type = 'row', 
				value = 'افتتاح', 
				label = 'الافتتاح',
				blockers = {"تاريخ الافتتاح", "تاريخ_الافتتاح",'opened'}, 
				wikidata = keyDate{'Q1417098'}
			},

			{
				type = 'row', 
				value = 'تكريس', 
				label = 'التكريس',
				blockers = 'افتتاح',
				wikidata = keyDate{ 'Q125375'}
			},
			{
				type = 'row', 
				value = 'أول ضوء', 
				label = '[[أول ضوء (علم الفلك)|]]',
				blockers = 'افتتاح',
				wikidata = keyDate{'Q1306940'} -- P1619 = ouverture officielle, pas ouverture de facto
			},
		}
	}
end


function p.renovation()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = 'ترميم',
				label = 'الترميم',			
				wikidata = keyDate{'Q217102'},
				blockers = 'تجديد',
			},
			{
				type = 'row',
				value = 'تجديد',
				label = 'التجديد',			
				wikidata = keyDate{'Q2144402'},
				blockers = 'ترميم',
			},
			{
				type = 'row',
				value = {'توسعة', 'التوسعة'},
				label = 'التوسعة',		
				wikidata = keyDate{'Q18621193'},
				blockers = 'تجديد',
			},
			{
				type = 'row',
				value = 'أشغال أخرى',
				label = 'أشغال أخرى',		
		},
	}
}
end

function p.demolition()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				value = {'هدم', 'تاريخ الهدم'},
				label = 'الهدم',
				wikidata = keyDate('Q331483')
			},
			{
				type = 'row',
				value = {'تدمير'},
				label = 'التدمير',
				wikidata = keyDate('Q17781833')
			},
			{
				type = 'row',
				value = {'تخريب','vandalism'},
				label = 'التخريب',
				wikidata = keyDate('Q6160')
			}
		}
	}
end

function p.closure()
	return {
		type = 'row',
		value = {'الإقفال', 'تاريخ_الإقفال','تاريخ_الاغلاق','closing_date','closed'},
		label = 'الإقفال',
		wikidata = keyDate{'Q5135520', 'P3999', 'P576'} 
	}
end

function p.maintenance()
	return {
		type = 'row',
		label = 'الصيانة',
		wikidata = showDate('P126',{conjunction='<br />'}),
		value = {'صيانة','maintenance'}
	}
end

function p.usage()
	return {
		type = 'row',
		label = 'الاستعمال',
		value = 'الاستعمال', 
		wikidata = showDate('P366',{conjunction='<br />', list='bestrank'}),
	}
end

function p.operator()
	return {
		type = 'row',
		label = 'الإدارة',
		wikidata = showDate('P137',{conjunction='<br />'}), 
		value = {'إدارة', 'مسير','المشغل','operator','الإدارة'}
	}
end

function p.transport()
	return {
		type = 'multi', 
		rows = {
			{type = 'row', label = 'الموقف', value = 'موقف'},
			{type = 'row', label = 'محطة', value = 'محطة'},
			{type = 'row', label = 'الميترو', value = 'ميترو'},
			{type = 'row', label = 'ترمواي', value = {'قطار', 'ترمواي'}},
			{type = 'row', label = 'حافلة', value = {'باص', 'حافلة'}},
		},
	}
end

function p.part_of() -- le complexe immobilier auquel appartient un bâtiment
	return {
		type = 'row',
		label = 'جزء من',
		value = 'جزء من',
		wikidata = {
			property = 'P361',
		}
	}
end

function p.orientation()
	return {
		type = 'row',
		label = 'الإتجاه',
		value = {'إتجاه','orientation'},
		wikidata = {property = 'P7469', numval = '1'},
	}
end


function p.archistyle()
	return {
		type = 'multi', 
		rows = {
			{
			type = 'row',
			label = 'النمط المعماري',
			plurallabel = 'الأنماط المعمارية',
			value = {'نمط معماري', 'نمط','طراز'},
			wikidata = {property = 'P149 OR P135'}
			},
    }   }
end

function p.creator() 
	return {
		type = 'multi',
		rows = { 
			{
				type = "row",
				label =  "المهندس المعماري",
				plurallabel = "المهندسون المعماريون",
				value = {'معماري','المهندس المعماري','المهندس_المعماري','architect'},
				wikidata = {property = 'P84'},
			},
			{
				type = "row",
				label = "المهندس الإنشائي",
				plurallabel = "المهندسون الإنشائيون",
				value = {'مهندس','المهندس_الإنشائي'},
				wikidata = {property = 'P631'},
			},
			{	type = "row",
				label = "المصمم",
				plurallabel = "المصممون",
				value = "مصمم",
				wikidata = {property = 'P170'},
				blockers = {'مهندس'},
			},
		}
	}
end


function p.owner()
	return {
		type = 'multi', 
		rows = {
			{
				type = 'row',
				label = 'المالك الأول',
				plurallabel = 'الملاك الأوائل',
				value = 'المالك الأول',
			},
			{
				type = 'row',
				label = 'المالك الحالي',
				plurallabel = 'الملاك الحاليون',
				value = 'المالك الحالي',
			},
			{
				type = 'row',
				label = 'المالك',
				plurallabel = 'الملاك',
				value = {'مالك','owner','المالك'},
				wikidata = {property = 'P127'}
			}
		}
	}
end

function p.religion()
	return {
		type = 'row',
		label = 'الديانة',
		value = {'ديانة', 'دين'},
		property = 'P140',
	}
end


function p.shape()
	return {
		type = 'row',
		label = 'الشكل',
		value = {'شكل', 'هيئة'},
		property = 'P1419',
	}
end

function p.dimensions()
	return {
	type = 'multi', 
	rows = {
	{
		type = 'row',
		label = 'ارتفاع الهوائي' ,
		value = 'ارتفاع الهوائي',
		wikidata = {wikimod = 'Wikidata.Ca',
				property='P2048', list='bestrank',colformat0='unitlinked', formatting='table',
                qualifier='P518' , rowformat='$0$R0', whitelist1='Q131214,Q852590'
                }
	},
	{
		type = 'row',
		label = 'ارتفاع السقف',
		value = 'ارتفاع السقف',
		wikidata = {wikimod = 'Wikidata.Ca',property='P2048', list='bestrank',colformat0='unitlinked', formatting='table',
                qualifier='P518' , rowformat='$0$R0', whitelist1='Q83180'}
	},
	{
		type = 'row',
		label = 'الطوابق',
		value = 'الطوابق' 
	},
	{
		type = 'row',
		label = 'الارتفاع',
		value = 'ارتفاع',
		wikidata =  {wikimod = 'Wikidata.Ca',property='P2048', list='bestrank',colformat0='unitlinked', formatting='table'
                        , conjunction='<br />', qualifier='P518' , rowformat='$0$R0 $1' 
                        , rowsubformat1='<small>($1)</small>' },
    },
	{
		type = 'row',
		label = 'العمق',
		value = 'عمق',
		wikidata =  {property = 'P2610',formatting='unit'},
	},
	{
		type = 'row',
		label = 'الطول',
		value = 'طول',
		wikidata = {property = 'P2043',formatting='unit'},
	},
	{
		type = 'row',
		label = 'العرض',
		value = 'عرض',
		wikidata = {property = 'P2049',formatting='unit'},
	},
	{
		type = 'row',
		label = 'الباع',
		value = 'باع',
		wikidata = {property = 'P2050',formatting='unit'},
	},
	{
		type = 'row',
		label = 'القطر',
		value = 'قطر',
		wikidata = {property = 'P2386',formatting='unit'},
	},
	{
		type = 'row',
		label = 'المحيط',
		value = {'محيط', 'المحيط'},
		wikidata = {property = 'P2547',formatting='unit'},
	},
	{
		type = 'row',
		label = 'الإرتفاع الهندسي',
		value = 'الإرتفاع',
		wikidata =  {wikimod = 'Wikidata.Ca',property='P2048', list='bestrank',colformat0='unitlinked', formatting='table',
                qualifier='P518' , rowformat='$0$R0', whitelist1='Q24192182'}
	},
	{
		type = 'row',
		label = 'المساحة',
		value = {'المساحة', 'مساحة'},
		wikidata = {property = 'P2046',formatting='unit'},
	},
	{
		type = 'row',
		label = 'الحجم',
		value = {'حجم','volume'},
		wikidata = {property = 'P2234',formatting='unit'},
	},
	{
		type = 'row',
		label = 'المسافة التحتية',
		value = {'مسافة تحتية','clearance'},
		wikidata = {property = 'P2793',formatting='unit'},
	}

	}
}
end

function p.floors()
	return {
	type = 'multi', 
		rows = {
	{
		type = 'row',
		label = 'الطوابق',
		value = {'الطوابق', 'طوابق','عدد الطوابق','عدد_الطوابق','floor_count'},
		property = 'P1101',
	},
	{
		type = 'row',
		label = 'الطوابق الأرضية',
		value = {'الطوابق الأرضية', 'طوابق أرضية','عدد الطوابق الأرضية'},
		property = 'P1139',
	}
	}
}
end

function p.causeOfDestruction()
	return 		{type = 'row' 
			, label = 'سبب الدمار'
			, value = {'سبب الدمار','cause of destruction'}
 			, wikidata = {property='P770'}
		}
end
p.destroyedby = p.causeOfDestruction

function p.material()
	return {
		type = 'row',
		label = 'مادة البناء',
		plurallabel = 'مواد البناء',
		value = 'مادة البناء', 
		wikidata = {wikimod = 'Wikidata.Ca', property = 'P186' , qualifier = 'P518', formatting='table', conjunction='<br />'
                              , rowformat='$0$R0 $1' 
                              , rowsubformat1='<small>($1)</small>'},
	}
end

function p.colour()
	return {
		type = 'row',
		label = 'اللون',
		plurallabel = 'الألوان',
		value = {'لون', 'ألوان'},
		property = 'P462',
	}
end

function p.inscription()
	return {
		type = 'row',
		label = 'لافتة',
		value = {'لافتة', 'يافطة'},
		wikidata = {property = 'P1684', numval = '1'},
	}
end

function p.equipment()
	return {
		type = 'row',
		label = 'التجهيز',
		plurallabel = 'التجهيزات',
		value = {'تجهيز', 'التجهيز'},
		property = 'P912',
	}
end

function p.replaces()
	return {
		type = 'row',
		label = 'عوض',
		value = 'عوض',
		property = 'P1398',
	}
end

function p.replacedby()
	return {
		type = 'row',
		label = 'حل مكانه',
		value = 'حل مكانه',
		property = 'P167',
	}
end

function p.visitors()
	return {
		type = 'row',
		label = 'عدد الزوار سنويا',
		value = {'الزوار', 'عدد الزوار سنويا','زوار'},
		wikidata = showDate('P1174',{conjunction='<br />', list='bestrank'}),
	}
end

function p.protection()
	return {
		type = 'row',
		label = 'Statut patrimonial',
		value = {'classement', 'protection'},
		--wikidata = {property ='P1425'}
	}
end

function p.unesco() 
	local id = localdata['رقم']
	if (id == '-') then
		return nil
	end
	if id then
		id = '[http://whc.unesco.org/ar/list/' .. id .. ' ' .. id .. ']'

	else
		id = wd.formatAndCat{entity = item, property = 'P757',  urlpattern = 'http://whc.unesco.org/ar/list/$1'}

	end
	if (not id) then
		return nil
	end
	return 
	{type = 'table', title = '[[File:World Heritage Emblem.svg|15px|alt=Logo du patrimoine mondial|link=موقع تراث عالمي]] تراث عالمي', rows = {
		{type = 'row', label = 'Désignation', value = 'nom unesco'},
		{type = 'row', label = "النوع", value = 'النوع', wikidata = {property = 'P1435', targetvalue = {'Q16617071', 'Q52683527', 'Q52683530'}}},
		{type = 'row', label = "السنة", value = 'السنة', wikidata = {property = 'P1435', targetvalue = {'Q9259', 'Q16617071', 'Q52683527', 'Q52683530'}, showonlyqualifier = {'P580'}}},
		{
		type = 'row',
		label = "رقم التعريف",
		value = function() return id end,
		},
		{	
		type = 'row',
		label = "المعايير",
		singularlabel = "المعيار",
		value = function(localdata)
			if localdata['المعايير'] then
					return '[http://whc.unesco.org/ar/criteres/' .. localdata['المعايير'] .. ']'
			end
			end, 
		wikidata = function(item)
			local str, numclaims = wd.formatStatements{entity = item, property = 'P2614', link = '-', conjtype = ' ', returnnumberofvalues = true}
			if str then
				return wd.formatAndCat{value = '[http://whc.unesco.org/ar/criteres/$1 ' .. str .. ']', entity = item, property = 'P2614'}, numclaims
			end
			end
		},
		{type = 'row', label = 'Surface', value = 'surface unesco'},
		{type = 'row', label = 'Zone tampon', value = 'surface zone tampon unesco'},
	}
}
end

function p.danger()
	return {
		type = 'row',
		label = 'Danger',
		plurallabel = 'Dangers',
		value = {'danger', 'dangers'},
		wikidata = {property = 'P3335', numval = 5},
	}
end

function p.policy()
	return {
		type = 'row',
		label = 'القانون',
		plurallabel = 'القوانين',
		value = {'قانون', 'policy'},
		wikidata = {property = 'P5023', numval = 5},
	}
end

function p.geoloc(params)
	return general.geoloc(params)
end

function p.awards()
	return general.awards(params)
end

function p.recordheld()
	return {
		type = 'row',
		label = 'رقم قياسي',
		plurallabel = 'أرقام قياسية',
		value = {'رقم_قياسي','record'},
		wikidata = showDate('P1000',{list=3,conjunction='<br />'}),
	}
end

function p.significantEvent()
	return {
		type = 'row',
		label = 'أحداث مهمة',
		value = {'أحداث','تواريخ_مهمة','significant_event','events'}, 
		wikidata = showDate('P793',{ conjunction='<br />',
			blacklist0 = 'Q18752057,Q385378,Q1370468,Q15051339,Q1417098,'
			..'Q125375,Q1306940,Q217102,Q2144402,Q18621193,Q331483,'
			..'Q17781833,Q6160,Q5135520'}),
	}
end


return p