Модуль:PersTools

Материал из Кадровый состав НКВД 1935-1939
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:PersTools/doc

local perstools = {}
local markerCode = {
	nil,
	nil,
	'<i class="fa fa-$1 fa-2x" style="color:#bbbbbb" title="$2"></i>',
	'<i class="fa fa-$1 fa-2x" style="color:#888888" title="$2"></i>',
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#bbbbbb"></i>'                -- было 888888
		.. '<i class="fa fa-circle-o fa-stack-2x" style="color:#888888"></i></span>',  -- было ff6363
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#bbbbbb"></i>'                -- было 888888
		.. '<i class="fa fa-ban fa-stack-2x" style="color:#888888"></i></span>',       -- было ff6363
	nil,
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-square fa-stack-2x" style="color:#888888"></i>'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#bbbbbb"></i></span>',
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-square fa-stack-2x" style="color:#888888"></i>'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#bbbbbb"></i>'
		.. '<i class="fa fa-circle-o fa-stack-2x" style="color:#dc8383"></i></span>',
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-square fa-stack-2x" style="color:#888888"></i>'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#bbbbbb"></i>'
		.. '<i class="fa fa-ban fa-stack-2x" style="color:#dc8383"></i></span>',
	'<i class="fa fa-times-circle fa-2x" style="color:#ff6363" title="$2"></i>',
	'<i class="fa fa-$1 fa-2x" style="color:#f4cb43" title="$2"></i>',
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#f4cb43"></i>'
		.. '<i class="fa fa-circle-o fa-stack-2x" style="color:#ff6363">',
	'<span class="fa-stack" title="$2">'
		.. '<i class="fa fa-$1 fa-stack-1x" style="color:#f4cb43"></i>'
		.. '<i class="fa fa-ban fa-stack-2x" style="color:#ff6363"></i></span>',
}
--                        1   2    3     4      5      6   7   8    9   10  11   12  13  14
perstools.preposition = { '', '', 'на', 'до',  'до', 'до', '', 'c', '', '', '', 'c', '', '' }


function perstools.fixedColumns( origin, marker, date, precision, noPrep, icon )
	origin = tonumber(origin)
	local x = markerCode[origin] or ''
	if noPrep then
		noPrep = ''
	else
		noPrep = perstools.preposition[origin]
	end
	local da
	if date == '' then
		da = '—'
		noPrep = ''
	else
		da = string.sub( date, 1, 4 )
		if precision ~= '3' then
			da = string.sub( date, 6, 7 ) .. '.' .. da
		end
		if precision == '1' then
			da = string.sub( date, 9, 10 ) .. '.' .. da
		end
	end
	if not icon then
		icon = string.gsub( x, '%$[12]', { ['$1'] = marker.icon, ['$2'] = marker[origin] } )
	end
	return 	'<td class="nkvd-table-marker">' .. icon .. '</td>'
		.. '<td class="nkvd-table-preposition">' .. (noPrep or '') .. '</td>'
		.. '<td class="nkvd-table-date">' .. da .. '</td>'
end

function perstools.makeWhere( gFio )
	local where = {}
	local tmp
	for _, fio in ipairs( gFio ) do
		tmp = 'lastN="' .. fio.f .. '"'
		if fio.f then
			tmp = tmp .. ' AND (nFirst="" OR nFirst LIKE "' .. mw.ustring.sub( fio.f, 1, 1 ) .. '%")'
		end
		if fio.m then
			tmp = tmp .. ' AND (nMiddle="" OR nMiddle LIKE "' .. mw.ustring.sub( fio.m, 1, 1 ) .. '%")'
		end
		if fio.d then
			tmp = tmp .. ' AND nDisambig IN (NULL, "' .. fio.d .. '")'
		end
		where[#where+1] = tmp
	end
	return table.concat( where, ' OR ' )
end
--[===[
function perstools.makePerson( row )
	local person, i, o, d = row.nLast, row.nFirst, row.nMiddle, row.nDisambig
	if i ~= '' or o ~= '' then
		person = person .. ', '
		if i == '' then
			i = '...'
		elseif mw.ustring.len( i ) == 1 then
			i = i .. '.'
		end
		person = person .. i
		if o ~= '' then
			if mw.ustring.len( o ) == 1 then
				o = o .. '.'
			end
			person = person .. ' ' .. o
		end
	end
	if d then
		return person .. ' ' .. d
	end
	return person
end
--]===]	
function perstools.makePersonLink( row )
	local person, i, o, d = row.nLast, row.nFirst, row.nMiddle, row.nDisambig
	if i ~= '' or o ~= '' then
		person = person .. ', '
		if i == '' then
			i = '...'
		elseif mw.ustring.len( i ) == 1 then
			i = i .. '.'
		end
		person = person .. i
		if o ~= '' then
			if mw.ustring.len( o ) == 1 then
				o = o .. '.'
			end
			person = person .. ' ' .. o
		end
	end
	if d ~= '' then
		local ds = d
--		if d == '(*)' then
--			ds = '<i class="fa fa-asterisk fa-lg"></i>' 
--		end
		return '[[' .. person .. ' ' .. d .. '|'
			.. person .. ' <span class="nkvd-idx">' .. ds .. '</span>]]'
	end
	return '[[' .. person .. ']]'
end
		
		


return perstools