پودمان:AlborzHealthcare
توضیحات این پودمان میتواند در پودمان:AlborzHealthcare/توضیحات قرار گیرد.
--------------------------------------------------------------------------------
-- Module:AlborzHealthcare
-- Wiki Alborz Healthcare Information System
-- Core Engine
-- Version 1.0
--------------------------------------------------------------------------------
local p = {}
--------------------------------------------------------------------------------
-- CLEAN
--------------------------------------------------------------------------------
local function clean(value)
if value == nil then
return nil
end
if type(value) == "string" then
value = mw.text.trim(value)
if value == "" then
return nil
end
end
return value
end
--------------------------------------------------------------------------------
-- GET ARGUMENTS
--------------------------------------------------------------------------------
local function getArgs(frame)
local args = {}
local source = frame:getParent() or frame
for k,v in pairs(source.args) do
local key = mw.text.trim(k)
local value = clean(v)
if value then
args[key] = value
end
end
return args
end
--------------------------------------------------------------------------------
-- ADD FIELD
--------------------------------------------------------------------------------
local function addField(result,label,value)
value = clean(value)
if value then
table.insert(result,{
label = label,
value = value
})
end
end
--------------------------------------------------------------------------------
-- BUILD INFOBOX
--------------------------------------------------------------------------------
local function build(args)
local result = {}
table.insert(result,
'<table class="healthcare-infobox">'
)
------------------------------------------------------------
-- TITLE
------------------------------------------------------------
local title = args.name or mw.title.getCurrentTitle().text
table.insert(result,
'<tr class="healthcare-infobox-title">' ..
'<th colspan="2">' ..
title ..
'</th></tr>'
)
------------------------------------------------------------
-- IMAGE
------------------------------------------------------------
if args.image then
table.insert(result,
'<tr>' ..
'<td colspan="2" class="healthcare-infobox-image">' ..
'[[File:' ..
args.image ..
'|250px]]'
)
if args.caption then
table.insert(result,
'<div class="healthcare-infobox-caption">' ..
args.caption ..
'</div>'
)
end
table.insert(result,
'</td></tr>'
)
end
------------------------------------------------------------
-- LOCATION
------------------------------------------------------------
table.insert(result,
'<tr class="healthcare-infobox-header">' ..
'<th colspan="2">موقعیت</th></tr>'
)
local fields = {}
addField(fields,"کشور",args.country)
addField(fields,"استان",args.province)
addField(fields,"شهر",args.city)
addField(fields,"منطقه",args.district)
addField(fields,"نشانی",args.address)
addField(fields,"مختصات",args.coordinates)
------------------------------------------------------------
-- INFORMATION
------------------------------------------------------------
table.insert(result,
'<tr class="healthcare-infobox-header">' ..
'<th colspan="2">اطلاعات مرکز</th></tr>'
)
addField(fields,"نوع مرکز",args.type)
addField(fields,"نام کامل",args.fullname)
addField(fields,"تخصص",args.specialty)
addField(fields,"وابستگی",args.affiliation)
addField(fields,"سال تأسیس",args.established)
addField(fields,"مدیر",args.director)
------------------------------------------------------------
-- SERVICES
------------------------------------------------------------
table.insert(result,
'<tr class="healthcare-infobox-header">' ..
'<th colspan="2">خدمات درمانی</th></tr>'
)
addField(fields,"خدمات",args.services)
addField(fields,"بخشها",args.departments)
addField(fields,"تعداد تخت",args.beds)
addField(fields,"اورژانس",args.emergency)
------------------------------------------------------------
-- INSURANCE
------------------------------------------------------------
table.insert(result,
'<tr class="healthcare-infobox-header">' ..
'<th colspan="2">بیمههای طرف قرارداد</th></tr>'
)
addField(fields,"بیمهها",args.insurance)
------------------------------------------------------------
-- CONTACT
------------------------------------------------------------
table.insert(result,
'<tr class="healthcare-infobox-header">' ..
'<th colspan="2">ارتباطات</th></tr>'
)
addField(fields,"تلفن",args.phone)
addField(fields,"ایمیل",args.email)
addField(fields,"وبگاه",args.website)
addField(fields,"اینستاگرام",args.instagram)
------------------------------------------------------------
-- OUTPUT FIELDS
------------------------------------------------------------
for _,field in ipairs(fields) do
table.insert(result,
'<tr>' ..
'<th class="healthcare-infobox-label">' ..
field.label ..
'</th>' ..
'<td class="healthcare-infobox-value">' ..
field.value ..
'</td>' ..
'</tr>'
)
end
table.insert(result,
'</table>'
)
return table.concat(result,"\n")
end
--------------------------------------------------------------------------------
-- PUBLIC
--------------------------------------------------------------------------------
function p.main(frame)
local args = getArgs(frame)
return build(args)
end
--------------------------------------------------------------------------------
-- TEMPLATE ENTRY
--------------------------------------------------------------------------------
function p.infobox(frame)
return p.main(frame)
end
return p