Module:Lok sabha constituency

நாகப்பட்டினம் மக்களவைத் தொகுதி [ edit ]
நாகப்பட்டினம் மக்களவைத் தொகுதி (2008 மறுசீரமைப்புக்குப் பிந்தையது)
தற்போதைய
மக்களவை உறுப்பினர்
Current MP (Successful candidate - P991) name is missing at d:Q3533967
கட்சிQualifier Political party (102) is missing under P585 in d:Q3533967
ஆண்டு2014 Election
மாநிலம்தமிழ்நாடு
சட்டமன்றத் தொகுதிகள்நாகப்பட்டினம் சட்டமன்றத் தொகுதி
கீழ்வேளூர் சட்டமன்றத் தொகுதி
வேதாரண்யம் சட்டமன்றத் தொகுதி
திருத்துறைப்பூண்டி சட்டமன்றத் தொகுதி
திருவாரூர் சட்டமன்றத் தொகுதி
நன்னிலம் சட்டமன்றத் தொகுதி
திருவள்ளூர் மக்களவைத் தொகுதி [ edit ]
திருவள்ளூர் மக்களவைத் தொகுதி (2008 மறுசீரமைப்புக்குப் பிந்தையது)
தற்போதைய
மக்களவை உறுப்பினர்
Current MP (Successful candidate - P991) name is missing at d:Q7785493
கட்சிQualifier Political party (102) is missing under P585 in d:Q7785493
ஆண்டு2014 Election
மாநிலம்தமிழ்நாடு
சட்டமன்றத் தொகுதிகள்கும்மிடிப்பூண்டி சட்டமன்றத் தொகுதி
பொன்னேரி சட்டமன்றத் தொகுதி
திருவள்ளூர் சட்டமன்றத் தொகுதி
பூந்தமல்லி சட்டமன்றத் தொகுதி
ஆவடி சட்டமன்றத் தொகுதி
மாதவரம் சட்டமன்றத் தொகுதி

Copy this template to any lok sabha constituency page {{Infobox lok sabha constituency1|{{#invoke:Wikidata|pageId}}}}

For another wikipedia, copy & translate the parameter values in: Module:Lok sabha constituency/labels

{{</nowiki>#invoke:Lok sabha constituency|function_name}}



local loksabha = {}
local args = {}
local QId;
local label =mw.loadData('Module:Lok_sabha_constituency/labels')
local lang=mw.language.getContentLanguage().code

local function ifnotempty(s,a,b)
	if (s and s ~= '') then
		return a
	else
		return b
	end
end

local function ifexist(page)
    if not page then return false end
    if mw.title.new(page).exists then return true end
    return false
end

local function getwikidatalabel(id)	
	--wikidata label
	return mw.wikibase.label(id) or id
end
	
local function getwikilink(id)
	if	ifexist(mw.wikibase.sitelink(id)) then
		return '[['.. mw.wikibase.sitelink(id) .. '|'.. mw.wikibase.label(id) ..']]'
	else
		return mw.wikibase.label(id) or id
	end
end

--comma
function comma_value(amount)
	if amount==nil then return end
  local formatted = tonumber(amount)
  while true do  
    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
    if (k==0) then
      break
    end
  end
  return formatted
end

	--print(getProperty('Q1255973','P159'))
function getProperty(id, propertyName )
	local entity = mw.wikibase.getEntityObject(id)
	return getPropertyByEntity(entity,propertyName);

end --getproperty
function getPropertyByEntity(_entity, propertyName )
	local entity = _entity; -- mw.wikibase.getEntityObject(id)
	if not entity or not entity.claims then return end--the entity doesnt exist or have no claims
	local property = entity.claims[propertyName]
	if not property then return end--no such property for this item

	--lang=mw.language.getContentLanguage()
	i=1
	default_lang='en'
	local default_text=''
	for _ in ipairs(property) do

		propy = property[i]
		i=i+1
		local propValue = propy.mainsnak and propy.mainsnak.datavalue
	 	local propType = propy.mainsnak and propy.mainsnak.datatype
		if not propValue then return end --property doesnt exist
	
	
		if propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == default_lang then
			default_text = propValue.value['text']..mw.ustring.format( "update at :[[:wikidata:%s|%s]]", _entity.id, _entity.id..':'.. propertyName )
		end
	
		if propValue['type'] == 'wikibase-entityid' then
			local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )
			local linkTitle = mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
			return linkTarget and linkTitle and mw.ustring.format( "[[%s|%s]]", linkTarget, linkTitle )
			--return  linkTitle 
			
		elseif propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == lang then 
			return propValue.value['text'] 
		elseif propType and  (propType  == 'commonsMedia' or propType=='string') then
			return propValue['value']
		elseif propType and propType  == 'quantity' then
			return tonumber(propValue.value['amount'])
		end --if

	end --for

	return default_text; --incase value for other language missing

end --getproperty

function getQualifierDateValue(_entity,propertyID,qualifierID)
	local pattern = "+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"
	if _entity.claims[propertyID] ~= nil  then
		local out = {}
		for k, v in pairs(_entity.claims[propertyID]) do
			if v.qualifiers and v.qualifiers[qualifierID] ~= nil  then
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do
					if v2.datatype=='time' and  v2.datavalue ~=nill then
						local xyear=v2.datavalue.value['time']:match(pattern)
						--print(xyear)

						table.insert(out ,xyear)
					elseif v2.datatype=="time"  and v2.snaktype=="novalue" then

						table.insert(out, v2.snaktype)
					end
				end
			end
		end
		return out
	else
		return ""
	end
	
end

function getExistence(_entity)
	local a={}
	local b={}
	a=getQualifierDateValue(_entity,'P31','P580'); --instance of / start time
	b=getQualifierDateValue(_entity,'P31','P582');--instance of / end time

	table.sort(a)
	table.sort(b)

	local str="";

	if a~=nil then
		for k,v in ipairs(a) do
			if str ~="" then	str= str.."<br>" end
			if  tonumber(v) and tonumber(b[k]) and tonumber(v)<tonumber(b[k]) then
				str=tostring(str) .. tostring(v) .." - ".. tostring(b[k])
			elseif  tonumber(b[k]) ==nil then
				if b[k]=="novalue" or b[k]==nil then b[k]= label.Present; end --mw.wikibase.label("Q193168") or "[[d:Q193168|]]" end --present
				str=tostring(str) .. tostring(v) .." - ".. tostring(b[k])	
			end
		end
	else
		str="Start Time Property value <br />missing at [[d:".. _entity.id ..":P31:P580]]"
	end

	--print(str)
	return(str)
end

--print(getPropertyValue('Q7785493','P991'))
function getPropertyValue(id, propertyName )
	local _entity = mw.wikibase.getEntityObject(id)
	
	return getPropertyValueByEntity(_entity,propertyName)

end --getPropertyValueById

function getPropertyValueByEntity(_entity, propertyName )
	if not _entity or not _entity.claims then return end--the entity doesnt exist or have no claims
	local property = _entity.claims[propertyName]
	if not property then return end--no such property for this item

	--local lang=mw.language.getContentLanguage().code
	i=1
	
	for _ in ipairs(property) do

		propy = property[i]
		i=i+1
		local propValue = propy.mainsnak and propy.mainsnak.datavalue
	 local propType = propy.mainsnak and propy.mainsnak.datatype
		if not propValue then return end --property doesnt exist
	
--	print(mw.dumpObject(propValue))
		if propValue['type'] == 'wikibase-entityid' then
			local numericid =  "Q" .. propValue.value['numeric-id']
			
			return numericid	
		elseif propValue and propValue['type'] == 'monolingualtext' and propValue.value['language'] == lang then 
			return propValue.value['text'] 
		else
			return
		end --if

	end --for

	return default_text; --incase value for other language missing

end --getPropertyValueByEntity

local function getReserved(classification)
	--local classification=getPropertyValueByEntity(_entity,'P2502') --P2502:classification
	if classification == nill then return end 
	classification='Q'..classification
	local scst=getPropertyValue(classification,'P361') --P361 :partof
	--print(scst)
	if	ifexist(mw.wikibase.sitelink(scst)) then
		_shortname=getShortName(classification);
		if  _shortname~=nil then --P1813:short name
			return mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(scst), mw.wikibase.label(classification))	
		else
			return mw.ustring.format( "[[%s]]", mw.wikibase.sitelink(scst))
		end	
	else
		return mw.wikibase.label(classification) or classification
	end
end
--print(getReserved('22813282'))

function getPartyLink(partyid)--party of successful candidate
	local str="Qualifier Political party (102) is missing under P585 in [[d:".. QId .."]]";
	if partyid==nil then return str end;
	--local partyid=getPropertyValue(id,'P102')--member of political party
	partyid='Q'..partyid
	if	ifexist(mw.wikibase.sitelink(partyid)) then
		_shortname=getShortName(partyid);
		if  _shortname~=nil then --short name
			str= mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(partyid), _shortname)	
		else
			str= mw.ustring.format( "[[%s]]", mw.wikibase.sitelink(partyid))
		end	
	else
		str= mw.wikibase.label(partyid) or "Political party (P102) is missing at [[d:".. QId .."]]";
	end
	
	return str
end
function getCurrentMP(_id)
	local propertyID ="P991" --successful candidate
	local str="Current MP (Successful candidate - P991) name is missing at [[d:".. QId .."]]";
	if _id==nil then return str;
		
	elseif	ifexist(mw.wikibase.sitelink(_id)) then
		str=mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(_id), mw.wikibase.label(_id))	
		
	elseif mw.wikibase.label(_id) then
		str= mw.ustring.format( "[[%s]]", mw.wikibase.label(_id))
	else
		str=_id
	end

	return str;
end

function getElectionYear(_id,elec_year)
	if _id==nil or _id=='Q' then 
		return nil;		
	elseif	mw.wikibase.sitelink(_id)~=nil then
		return mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(_id), elec_year)	
	elseif mw.wikibase.label(_id) then
		return mw.ustring.format( "[[%s|%s]]", mw.wikibase.label(_id), elec_year)	
	else
		return nil
	end	
end

function getMostSuccessfulParty(_entity)

	party_list={}
	local propertyID='P585' --point in time	
	if _entity.claims[propertyID]  then
		local pattern="+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"

		for k, v in pairs(_entity.claims[propertyID]) do
			P585Qual = v['qualifiers'];
			
			if P585Qual~=nil  and P585Qual['P102']~=nil then S102=P585Qual['P102'][1].datavalue.value['numeric-id']; end --classification
			local string s=mw.ustring.format("%s",S102)
			if party_list[s] ~=nil then
				party_list[s]=tonumber(party_list[s])+1;
			else
				party_list[s]=1;
			end
			
		end
	
	end
		
			
	local max_val, key = -math.huge


	for k, v in pairs(party_list) do
		if v > max_val then
			max_val, key = v, k
		end
	end

	if key~=nil then
		_shortname=getShortName('Q'..key);
  		if  mw.wikibase.sitelink('Q'..key)~=nil then
			party=mw.ustring.format("[[%s|%s]]", mw.wikibase.sitelink('Q'..key), _shortname or mw.wikibase.label('Q'..key) or '')
		elseif mw.wikibase.label('Q'..key)~=nil then
			party=mw.ustring.format("[[%s]]", mw.wikibase.label('Q'..key))
		else
			party=mw.ustring.format("[[:d:%s]]", 'Q'..key)
		end
		
		return mw.ustring.format("%s \(%s %s\)",party, max_val,label.Times)
	else
		return ""
	end
end

function getImage(_entity)
	local property=getPropertyByEntity(_entity, 'P242' )
	if  property~=nil then
		return mw.ustring.format( "[[File:%s|220px]]", property)	
	else
		return ''			
	end	
end

function getImageLegend(_entity)
	
	--lang=mw.language.getContentLanguage().code
	
	local propertyID='P242' --locator map image
	local qualifierID='P2096' --image legend
	local legend ="Image Legend qualifier <br />missing at [[d:".. _entity.id ..":P242:P2096]]";
	if _entity.claims[propertyID]  then
		for k, v in pairs(_entity.claims[propertyID]) do
			if v.qualifiers~=nil and v.qualifiers[qualifierID]  then
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do
					if v2.datatype=='monolingualtext' and  v2.datavalue ~=nill and v2.datavalue.value['language']==lang then
						legend=v2.datavalue.value['text'];
					end
				end
			end
		end
	end
	return legend;
end

	local function getElectors(_entity)
		local property=getPropertyByEntity(_entity, 'P1867' )--eligible voters
		if  property~=nil then
			return mw.ustring.format( "%s", property)	
		else
			return ''			
		end
	end
	
	local function assemblylist(_entity)
		--has part P527
		--local Qid="Q7785493"
		local propertyID ="P527"--has part
		--local entity = mw.wikibase.getEntityObject(Qid)
		local str=""
		if _entity.claims[propertyID] ~= nil then
			for k, v in pairs(_entity.claims[propertyID]) do
				if str ~="" then	str= str.."<br>" end
				local id='Q' ..v.mainsnak.datavalue.value['numeric-id']
				local series=getProperty(id,'P1545')
				if series~=nil then series=series ..". " end
			--	str =str .. (series or '') .. mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(id), mw.wikibase.label(id))
				
				if	mw.wikibase.sitelink(id)~=nil and mw.wikibase.label(id) ~=nil then
					str =str .. mw.ustring.format( "[[%s|%s]]", mw.wikibase.sitelink(id), mw.wikibase.label(id))	
				elseif mw.wikibase.sitelink(id)~=nil then
					str =str .. mw.ustring.format( "[[%s]]", mw.wikibase.sitelink(id))
				elseif mw.wikibase.label(id)~=nil then
					str =str .. mw.ustring.format( "[[%s]]", mw.wikibase.label(id))	
				else
					str =str .. mw.ustring.format( "[[:d:%s]]", id)
				end	
				

			end
		--	print(str)
		end
		return str;
		
	end
	
	

	function getShortName(_id)
		local _entity = mw.wikibase.getEntityObject(_id)
		if _entity==nil then return ;
		elseif _entity.claims==nil then return end;
		local propertyID='P1813'
		if _entity.claims[propertyID]  then
			for k, v in pairs(_entity.claims[propertyID]) do
		--print(mw.dumpObject(v.mainsnak.datavalue.value))
				if(v.mainsnak.datavalue.value.language==lang)then
					return v.mainsnak.datavalue.value.text;
				end
				
			end
		
		end
	end
	local function setarg(k, v)
		if(v and v ~= '') then args[k] = v end
	end
	
	local function loadLokSabha(frame,s)

		local yearstr = string.sub(s,1,4)
		local Elected_Year =frame.args.Elected_Year
		QId=string.sub(s,5) or QId
		local _entity = mw.wikibase.getEntityObject(QId)
		local lokassmlist = assemblylist(_entity)
		local propertyID='P585' --point in time
		local elec_year
		if _entity.claims[propertyID]  then
			local elyear={}
			local pattern = "+(%d+)%-(%d+)%-(%d+)T(%d+):(%d+):(%d+)Z"
				
			pos=1
			for k, v in pairs(_entity.claims[propertyID]) do
				local val=mw.ustring.format("%s%s%s",v.mainsnak.datavalue.value.time:match(pattern))
				elyear[pos]=val
				pos=pos+1
			end
			
			local max_val, key = -math.huge
			
			for k, v in pairs(elyear) do

				if tonumber(v) > tonumber(max_val) then
					max_val, key = v, k
				end
			end
			P585Qual = _entity.claims[propertyID][key]['qualifiers']
			elec_year = string.sub(max_val,1,4)
			if P585Qual['P2502']~=nil then P2502=P585Qual['P2502'][1].datavalue.value['numeric-id']; end
			if P585Qual['P102'] ~=nil then P102 =P585Qual['P102'][1].datavalue.value['numeric-id']; end
			if P585Qual['P805'] ~=nil then P805 ='Q'..P585Qual['P805'][1].datavalue.value['numeric-id']; end
			if P585Qual['P991'] ~=nil then P991 ='Q'..P585Qual['P991'][1].datavalue.value['numeric-id']; end
			if P585Qual['P1867'] ~=nil then P1867 =P585Qual['P1867'][1].datavalue.value['amount']; end
			if P585Qual['P1868'] ~=nil then P1868 =P585Qual['P1868'][1].datavalue.value['amount']; end
		end
		
		setarg('title',getwikidatalabel(QId))
		setarg('image',  getImage(_entity) )
		setarg('caption',  getImageLegend(_entity) or '')
		setarg('Existence',  getExistence(_entity) or '')
		setarg('Reservation',  getReserved(P2502) or'')
		setarg('CurrMP', getCurrentMP(P991))
		setarg('Party', getPartyLink(P102))
		setarg('Yr', getElectionYear(P805, elec_year) or Elected_Year or '')
		setarg('State', getPropertyByEntity(_entity,'P131'))--dargs['State']
		setarg('TotElec', comma_value(P1867))--dargs['TotElec']
		setarg('SuccParty', getMostSuccessfulParty(_entity) or'')
		--setarg('Category', dargs['Category'] or '')
		setarg('AssList',lokassmlist or '')

	
	end

local function infobox(frame)
	local abovestr =args['title'] or ''
	local bgcolor = args['background'] or args['bgcolour'] or ''



	return frame:expandTemplate{ title = 'infobox', args = {
		["bodyclass"] = "vevent",
		["bodystyle"] = "width:25em; text-align:left; font-size:90%;",
		["above"] = mw.ustring.format( "%s [ [[d:%s|edit]] ]",abovestr ,QId),
		["aboveclass"] = "summary",
		["abovestyle"] = "padding-bottom:0.25em; background:" .. bgcolor .. "; line-height:1.2em; text-align:center; font-size:115%;",
------------------ Images and maps ------------------
		["image"] = args['image'] or '',
		["imagestyle"] = "padding-bottom:0.5em;",
		["caption"] = args['caption'] or '',
		["captionstyle"] = "padding-top:0.1em; line-height:1.2em; font-size:90%;",
		["headerstyle"] = "background:#eee; font-size:105%;",
		["labelstyle"] = "padding:0 0.5em 0 0; line-height:1.1em;",
		["datastyle"] = "padding:0; line-height:1.2em; vertical-align:middle;",
--		["label1"] =  'Title',
--		["data1"] =  args['title'] or '',
		
		["label3"] =  label.Existence,
		["data3"] =  args['Existence'] or '',
		
		["label4"] =  label.Reservation,
		["data4"] =  args['Reservation'] or '',
		
		["label5"] =  label.CurrentMP,
		["data5"] =  args['CurrMP'] or '',
		
		["label6"] =  label.Party,
		["data6"] =  args['Party'] or '',
		
		["label7"] =  label.ElectedYear,
		["data7"] =  args['Yr'] or '',
		
		["label8"] =  label.State,
		["data8"] =  args['State'] or '',
		
		["label9"] =  label.TotalElectors,
		["data9"] =  args['TotElec'] or '',
		
		["label10"] =  label.MostSuccessfulParty,
		["data10"] =  args['SuccParty'] or '',
		
		["label11"] =  label.Category,
		["data11"] =  args['Category'] or '',
		
		["label12"] =  label.AssemblyConstituencies,
		["data12"] =  args['AssList'] or '',
		
		} }
	
end

--fetch current elected member
function loksabha.memberpartyref(frame)
	args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Infobox lok sabha constituency1'  --test
		})

	if( args['2'] and args['2'] ~= '') then
		loadloksabhadb(frame,frame.args.year .. args['1'])
	elseif( args['1'] and args['1'] ~= '') then
		
		local entity=mw.wikibase.getEntityObject()
		if entity then
			--return entity.metatable.id
			--return mw.dumpObject(entity)		
		end
		--page id
		if(entity ) then
			if entity.id then 			QId = entity.id; end
		end

		loadLokSabha(frame,frame.args.year  .. args['1'])
	end
	
	if(args['CurrMP'] and args['CurrMP'] ~="") then
		return (args['CurrMP'] or '') .. '(<small>'.. (args['Party'] or '') ..'</small>)'
	else
		return ""
	end
	--infobox(frame)
end

--fetch current elected member
function loksabha.currentmember(frame)
	args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Infobox lok sabha constituency1'  --test
		})

	if( args['2'] and args['2'] ~= '') then
		loadloksabhadb(frame,frame.args.year .. args['1'])
	elseif( args['1'] and args['1'] ~= '') then
		--loadloksabhadb(frame,frame.args.year  .. args['1'])
		local entity=mw.wikibase.getEntityObject()
		if entity then
			--return entity.metatable.id
			--return mw.dumpObject(entity)		
		end
		--page id
		if(entity ) then
			if entity.id then 			QId = entity.id; end
		end

		loadLokSabha(frame,frame.args.year  .. args['1'])
	end
	
	return args['CurrMP'] or '' 
	--infobox(frame)
end

function loksabha.box(frame)
	args = require('Module:Arguments').getArgs(frame, {
			wrappers = 'Template:Infobox lok sabha constituency1'  --test
		})

	if( args['2'] and args['2'] ~= '') then
		loadloksabhadb(frame,frame.args.year .. args['1'])
	elseif( args['1'] and args['1'] ~= '') then
		--loadloksabhadb(frame,frame.args.year  .. args['1'])
		local entity=mw.wikibase.getEntityObject()
		if entity then
			--return entity.metatable.id
			--return mw.dumpObject(entity)		
		end
		--page id
		if(entity ) then
			if entity.id then 			QId = entity.id; end
		end

		loadLokSabha(frame,frame.args.year  .. args['1'])
	end
	
	return infobox(frame)
end

return loksabha
"https://ta.wikipedia.org/w/index.php?title=Module:Lok_sabha_constituency&oldid=2196209" இலிருந்து மீள்விக்கப்பட்டது