پرش به محتوا

پودمان:AlborzHealthcare

از ویکی البرز
نسخهٔ تاریخ ‏۴ اوت ۲۰۲۶، ساعت ۱۳:۲۲ توسط Modir (بحث | مشارکت‌ها) (صفحه‌ای تازه حاوی «-------------------------------------------------------------------------------- -- Module:AlborzHealthcare -- Wiki Alborz Healthcare Information System -- Core Engine -- Version 1.0 -------------------------------------------------------------------------------- local p = {} -------------------------------------------------------------------------------- -- CLEAN ---------------------------------------------------------------------...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

توضیحات این پودمان می‌تواند در پودمان: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