پرش به محتوا

پودمان:AlborzHealthcare: تفاوت میان نسخه‌ها

از ویکی البرز
صفحه‌ای تازه حاوی «-------------------------------------------------------------------------------- -- Module:AlborzHealthcare -- Wiki Alborz Healthcare Information System -- Core Engine -- Version 1.0 -------------------------------------------------------------------------------- local p = {} -------------------------------------------------------------------------------- -- CLEAN ---------------------------------------------------------------------...» ایجاد کرد
 
جزبدون خلاصۀ ویرایش
خط ۳: خط ۳:
-- Wiki Alborz Healthcare Information System
-- Wiki Alborz Healthcare Information System
-- Core Engine
-- Core Engine
-- Version 1.0
-- Version 1.1
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


local p = {}
local p = {}
--------------------------------------------------------------------------------
-- LOAD DATA
--------------------------------------------------------------------------------
local data = mw.loadData("Module:AlborzHealthcare/Data")




خط ۷۸: خط ۸۴:


             label = label,
             label = label,
             value = value
             value = value


خط ۹۵: خط ۱۰۰:


     local result = {}
     local result = {}


     table.insert(result,
     table.insert(result,
         '<table class="healthcare-infobox">'
         '<table class="healthcare-infobox">'
     )
     )




خط ۱۱۰: خط ۱۱۰:
     ------------------------------------------------------------
     ------------------------------------------------------------


     local title = args.name or mw.title.getCurrentTitle().text
     local title =
        args.name or mw.title.getCurrentTitle().text




خط ۱۲۱: خط ۱۲۲:


     )
     )




خط ۱۶۳: خط ۱۶۳:


     end
     end




     ------------------------------------------------------------
     ------------------------------------------------------------
     -- LOCATION
     -- GROUPS
     ------------------------------------------------------------
     ------------------------------------------------------------


     table.insert(result,
     for _,group in ipairs(data.groups) do


        '<tr class="healthcare-infobox-header">' ..
        '<th colspan="2">موقعیت</th></tr>'


    )
        local fields = {}




    local fields = {}
        for _,field in ipairs(group.fields) do




    addField(fields,"کشور",args.country)
            addField(


    addField(fields,"استان",args.province)
                fields,


    addField(fields,"شهر",args.city)
                field[1],


    addField(fields,"منطقه",args.district)
                args[field[2]]


    addField(fields,"نشانی",args.address)
            )


    addField(fields,"مختصات",args.coordinates)


        end




    ------------------------------------------------------------
    -- INFORMATION
    ------------------------------------------------------------


    table.insert(result,
        if #fields > 0 then


        '<tr class="healthcare-infobox-header">' ..
        '<th colspan="2">اطلاعات مرکز</th></tr>'


    )
            table.insert(result,


                '<tr class="healthcare-infobox-header">' ..
                '<th colspan="2">' ..
                group.title ..
                '</th></tr>'


    addField(fields,"نوع مرکز",args.type)
            )


    addField(fields,"نام کامل",args.fullname)


    addField(fields,"تخصص",args.specialty)
            for _,item in ipairs(fields) do


    addField(fields,"وابستگی",args.affiliation)


    addField(fields,"سال تأسیس",args.established)
                table.insert(result,


    addField(fields,"مدیر",args.director)
                    '<tr>' ..


                    '<th class="healthcare-infobox-label">' ..
                    item.label ..
                    '</th>' ..


                    '<td class="healthcare-infobox-value">' ..
                    item.value ..
                    '</td>' ..


    ------------------------------------------------------------
                    '</tr>'
    -- SERVICES
    ------------------------------------------------------------
 
    table.insert(result,
 
        '<tr class="healthcare-infobox-header">' ..
        '<th colspan="2">خدمات درمانی</th></tr>'


    )
                )




    addField(fields,"خدمات",args.services)
            end


    addField(fields,"بخش‌ها",args.departments)


    addField(fields,"تعداد تخت",args.beds)
        end


    addField(fields,"اورژانس",args.emergency)


    end




     ------------------------------------------------------------
     ------------------------------------------------------------
     -- INSURANCE
     -- CLOSE
     ------------------------------------------------------------
     ------------------------------------------------------------
    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.insert(result,
خط ۳۱۹: خط ۲۴۹:


end
end




--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- PUBLIC
-- PUBLIC FUNCTIONS
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


خط ۳۳۵: خط ۲۶۴:




--------------------------------------------------------------------------------
-- TEMPLATE ENTRY
--------------------------------------------------------------------------------


function p.infobox(frame)
function p.infobox(frame)
خط ۳۴۷: خط ۲۷۲:




--------------------------------------------------------------------------------
-- EXPORT
--------------------------------------------------------------------------------


return p
return p

نسخهٔ ‏۴ اوت ۲۰۲۶، ساعت ۱۳:۳۰

توضیحات این پودمان می‌تواند در پودمان:AlborzHealthcare/توضیحات قرار گیرد.

--------------------------------------------------------------------------------
-- Module:AlborzHealthcare
-- Wiki Alborz Healthcare Information System
-- Core Engine
-- Version 1.1
--------------------------------------------------------------------------------

local p = {}

--------------------------------------------------------------------------------
-- LOAD DATA
--------------------------------------------------------------------------------

local data = mw.loadData("Module:AlborzHealthcare/Data")


--------------------------------------------------------------------------------
-- 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


    ------------------------------------------------------------
    -- GROUPS
    ------------------------------------------------------------

    for _,group in ipairs(data.groups) do


        local fields = {}


        for _,field in ipairs(group.fields) do


            addField(

                fields,

                field[1],

                args[field[2]]

            )


        end



        if #fields > 0 then


            table.insert(result,

                '<tr class="healthcare-infobox-header">' ..
                '<th colspan="2">' ..
                group.title ..
                '</th></tr>'

            )


            for _,item in ipairs(fields) do


                table.insert(result,

                    '<tr>' ..

                    '<th class="healthcare-infobox-label">' ..
                    item.label ..
                    '</th>' ..

                    '<td class="healthcare-infobox-value">' ..
                    item.value ..
                    '</td>' ..

                    '</tr>'

                )


            end


        end


    end


    ------------------------------------------------------------
    -- CLOSE
    ------------------------------------------------------------

    table.insert(result,

        '</table>'

    )


    return table.concat(result,"\n")

end


--------------------------------------------------------------------------------
-- PUBLIC FUNCTIONS
--------------------------------------------------------------------------------

function p.main(frame)

    local args = getArgs(frame)

    return build(args)

end



function p.infobox(frame)

    return p.main(frame)

end


--------------------------------------------------------------------------------
-- EXPORT
--------------------------------------------------------------------------------

return p