|
|
| Line 1: |
Line 1: |
| local p = {}
| |
|
| |
|
| function p.getItemData(frame)
| |
| local itemName = frame.args[1] or mw.title.getCurrentTitle().text
| |
|
| |
| -- Check if ExternalData extension exists
| |
| if not mw.ext.ExternalData then
| |
| return "Error: ExternalData extension is missing."
| |
| end
| |
|
| |
| -- Retrieve database data
| |
| local result = mw.ext.ExternalData.getDBData{
| |
| db = "WikiDB",
| |
| from = "Items",
| |
| where = "ItemName = ?",
| |
| values = {itemName},
| |
| data = {
| |
| dbItemRarityName = "ItemRarityName",
| |
| dbItemTypeName = "ItemTypeName",
| |
| dbDescr = "Descr",
| |
| dbSpriteURL = "SpriteURL",
| |
| dbIngredientTypeName = "IngredientTypeName",
| |
| dbMinPointsSell = "MinPointsSell",
| |
| dbHP = "HP",
| |
| dbHunger = "Hunger"
| |
| }
| |
| }
| |
|
| |
| -- If no results found, return a message
| |
| if not result or #result == 0 then
| |
| return "Error: No data found for " .. itemName
| |
| end
| |
|
| |
| local item = result[1]
| |
|
| |
| -- Store data using frame args so it can be accessed in templates
| |
| return string.format('<div style="display:none;" id="dbItemRarityName">%s</div>' ..
| |
| '<div style="display:none;" id="dbItemTypeName">%s</div>' ..
| |
| '<div style="display:none;" id="dbDescr">%s</div>' ..
| |
| '<div style="display:none;" id="dbSpriteURL">%s</div>' ..
| |
| '<div style="display:none;" id="dbIngredientTypeName">%s</div>' ..
| |
| '<div style="display:none;" id="dbMinPointsSell">%s</div>' ..
| |
| '<div style="display:none;" id="dbHP">%s</div>' ..
| |
| '<div style="display:none;" id="dbHunger">%s</div>',
| |
| item.dbItemRarityName or "",
| |
| item.dbItemTypeName or "",
| |
| item.dbDescr or "",
| |
| item.dbSpriteURL or "",
| |
| item.dbIngredientTypeName or "",
| |
| item.dbMinPointsSell or "",
| |
| p.formatStat(item.dbHP),
| |
| p.formatStat(item.dbHunger, true)
| |
| )
| |
| end
| |
|
| |
| -- Helper function for formatting stats
| |
| function p.formatStat(value, isPercentage)
| |
| if not value or tonumber(value) == 0 then
| |
| return isPercentage and "0%" or "0"
| |
| end
| |
| local num = tonumber(value)
| |
| if num > 0 then
| |
| return isPercentage and ("+" .. num .. "%") or ("+" .. num)
| |
| else
| |
| return isPercentage and (num .. "%") or tostring(num)
| |
| end
| |
| end
| |
|
| |
| return p
| |
Documentation for this module may be created at Module:Testing/doc