Module:Sysreq: Difference between revisions
From Eli's Software Encyclopedia
mNo edit summary |
mNo edit summary |
||
| Line 104: | Line 104: | ||
-- Print data rows | -- Print data rows | ||
local function appendIfExists(label, value) | local function appendIfExists(label, value, link) | ||
local tr = utils.addLabelValue(label, value) | local tr = utils.addLabelValue(label, value, link) | ||
if tr then infobox:node(tr) end | if tr then infobox:node(tr) end | ||
end | end | ||
Latest revision as of 12:31, December 10, 2025
Documentation for this module may be created at Module:Sysreq/doc
local utils = require('Module:Utils')
local p = {}
function p.semanticStore(frame)
local titleObj = mw.title.getCurrentTitle()
local args = frame:getParent().args or {}
-- Get infobox helper params
local collapsible = args['collapsible'] or 'no'
local state = args['state'] or 'autocollapse'
local showImage = args['show image'] or 'no'
-- Get other properties
local title = args['title'] or titleObj.text
local reqCPU = args['reqCPU'] or '' -- Required CPU
local reqRAM = args['reqRAM'] or '' -- Required RAM
local ConRAM = args['ConRAM'] or '' -- Conventional RAM
local reqHD = args['reqHD'] or '' -- Req. Hard Drive
local reqDD = args['reqDD'] or '' -- Req. Dual Drives
local reqMouse = args['reqMouse'] or '' -- Requires Mouse
local reqJoystick = args['reqJoystick'] or '' -- Requires Joystick
local reqPaddle = args['reqPaddle'] or '' -- Requires Paddle
local reqCD = args['reqCD'] or '' -- Required CD Speed
local recCPU = args['recCPU'] or '' -- Recommend CPU
local recRAM = args['recRAM'] or '' -- Recommend RAM
local recHD = args['recHD'] or '' -- Rec. Hard Drive
local recDD = args['recDD'] or '' -- Rec. Dual Drives
local recMouse = args['recMouse'] or '' -- Recommend Mouse
local recJoystick = args['recJoystick'] or '' -- Recommend Joystick
local recPaddle = args['recPaddle'] or '' -- Recommend Paddle
local recCD = args['recCD'] or '' -- Recommend CD Speed
local supDD = args['supDD'] or '' -- Supports Dual Drives
local supMouse = args['supMouse'] or '' -- Supports Mouse
local supJoystick = args['supJoystick'] or '' -- Supports Joystick
local supPaddle = args['supPaddle'] or '' -- Supports Paddle
local reqSound = args['reqSound'] or '' -- Required Audio
local recSound = args['recSound'] or '' -- Recommend Audio
local supSound = args['supSound'] or '' -- Supported Audio
local supVideo = args['supVideo'] or '' -- Supported Video
local supMisc = args['supMisc'] or '' -- Misc Support
local supPrint = args['supPrint'] or '' -- Supported Printers
local reqNet = args['reqNet'] or '' -- Required Network
local supNet = args['supNet'] or '' -- Supported Network
-- Set properties
local data = {
'Has Title=' .. title,
'Required CPU=' .. reqCPU,
'Required RAM=' .. reqRAM,
'Conventional RAM=' .. ConRAM,
'Required Hard Drive=' .. reqHD,
'Required Dual Drives=' .. reqDD,
'Requires Mouse=' .. reqMouse,
'Requires Joystick=' .. reqJoystick,
'Requires Paddle=' .. reqPaddle,
'Required CD Speed=' .. reqCD,
'Recommend CPU=' .. recCPU,
'Recommend RAM=' .. recRAM,
'Recommend Hard Drive=' .. recHD,
'Recommend Dual Drives=' .. recDD,
'Recommend Mouse=' .. recMouse,
'Recommend Joystick=' .. recJoystick,
'Recommend Paddle=' .. recPaddle,
'Recommend CD Speed=' .. recCD,
'Supports Dual Drives=' .. supDD,
'Supports Mouse=' .. supMouse,
'Supports Joystick=' .. supJoystick,
'Supports Paddle=' .. supPaddle,
'Required Audio=' .. reqSound,
'Recommend Audio=' .. recSound,
'Supported Audio=' .. supSound,
'Supported Video=' .. supVideo,
'Misc Support=' .. supMisc,
'Supported Printers=' .. supPrint,
'Required Network=' .. reqNet,
'Supported Network=' .. supNet
}
mw.smw.subobject( data )
-- Infobox variables
local infoboxClass = 'chameleon-infobox smwtable-clean d-table w-100 w-md-30 d-md-flex float-none float-md-left border shadow-sm mr-md-4 mb-4 text-left'
local pad = ''
if collapsible == 'yes' then
infoboxClass = infoboxClass .. ' collapsible ' .. state
pad = frame:preprocess('{{pad|5em}}')
end
-- Build infobox
local html = mw.html.create()
local infobox = html:tag('table'):addClass(infoboxClass)
:css('font-size', '90%')
:attr('cellpadding', '0')
:attr('cellspacing', '0')
-- Header row (title + optional image)
local headerTr = mw.html.create('tr')
headerTr:tag('td'):attr('colspan', '2')
:tag('div'):addClass('summary text-center font-italic font-weight-bold')
:css('font-size', '110%')
:wikitext(pad .. title):done()
infobox:node(headerTr)
-- Print data rows
local function appendIfExists(label, value, link)
local tr = utils.addLabelValue(label, value, link)
if tr then infobox:node(tr) end
end
-- appendIfExists('Title', title)
appendIfExists('Required CPU', reqCPU)
appendIfExists('Required RAM', reqRAM)
appendIfExists('Conventional RAM', ConRAM)
appendIfExists('Req. Hard Drive', reqHD)
appendIfExists('Req. Dual Drives', reqDD)
appendIfExists('Requires Mouse', reqMouse)
appendIfExists('Requires Joystick', reqJoystick)
appendIfExists('Requires Paddle', reqPaddle)
appendIfExists('Required CD Speed', reqCD)
appendIfExists('Recommend CPU', recCPU)
appendIfExists('Recommend RAM', recRAM)
appendIfExists('Rec. Hard Drive', recHD)
appendIfExists('Rec. Dual Drives', recDD)
appendIfExists('Recommend Mouse', recMouse)
appendIfExists('Recommend Joystick', recJoystick)
appendIfExists('Recommend Paddle', recPaddle)
appendIfExists('Recommend CD Speed', recCD)
appendIfExists('Supports Dual Drives', supDD)
appendIfExists('Supports Mouse', supMouse)
appendIfExists('Supports Joystick', supJoystick)
appendIfExists('Supports Paddle', supPaddle)
appendIfExists('Required Audio', reqSound)
appendIfExists('Recommend Audio', recSound)
appendIfExists('Supported Audio', supSound)
appendIfExists('Supported Video', supVideo)
appendIfExists('Misc Support', supMisc)
appendIfExists('Supported Printers', supPrint)
appendIfExists('Required Network', reqNet)
appendIfExists('Supported Network', supNet)
return html
end
return p
