Module:Test: Difference between revisions

From Resonite Wiki
mNo edit summary
mNo edit summary
Line 63: Line 63:
   :attr( 'style', 'height: 50px;')
   :attr( 'style', 'height: 50px;')
   :tag( 'td' )
   :tag( 'td' )
     :attr( 'style', 'text-align: right; border-left: 10px solid var(--color-surface-0); border-bottom: 10px solid var(--color-surface-0); border-top: 10px solid var(--color-surface-0); background-color:' .. (Output and typeColor[Output.Type] or 'rgba(0,0,0,0)') )
     :attr( 'style', 'text-align: right; border-left: 10px solid var(--color-surface-0); border-bottom: 2px solid var(--color-surface-0); border-top: 18px solid var(--color-surface-0); background-color:' .. (Output and typeColor[Output.Type] or 'rgba(0,0,0,0)') )
     :wikitext( Output and Output.Name or '' )
     :wikitext( Output and Output.Name or '' )
     :done()
     :done()

Revision as of 04:19, 13 January 2024

Documentation for this module may be created at Module:Test/doc

local p = {}

local typeColor = 
{
 User = 'rgb(255, 128, 255)',
 Impulse = 'rgb(179, 255, 255)',
 Boolean = 'rgb(115, 115, 115)'
}

local mt = {__index = function () return "rgba(0,0,0,0)" end}
setmetatable(typeColor, mt)

function p.ProtoFlux( frame )
 local inputsDecode = mw.text.jsonDecode( frame.args.Inputs );
 local outputsDecode = mw.text.jsonDecode( frame.args.Outputs );

 local protofluxContainer = mw.html.create( 'table' )
 
 protofluxContainer
  :attr( 'style', '-webkit-text-stroke: 1px black;' )
  :attr( 'width', "256px" )
  :tag( 'tr' )
  :attr( 'style', 'height: 50px;')
   :tag( 'th' )
    :attr('width', '20%')
    :done()
   :tag( 'th' )
    :attr('width', '60%')
    :wikitext(frame.args.Name)
    :done()
   :tag( 'th')
    :attr('width', '20%');

 local maxRows = math.max(#inputsDecode, #outputsDecode)
 for i=1,maxRows,1 do
  CreateIORow(protofluxContainer, inputsDecode[i], outputsDecode[i]);
 end
 

 return tostring(protofluxContainer);

end

-- Each Input/Output row is really 2 rows high. 
function CreateIORow(Container, Input, Output)
 Container
  :tag( 'tr' )
  :attr( 'style', 'height: 50px;')
   :tag( 'td' ) -- The Input binding post
    :attr( 'rowspan', '2' )
    :attr( 'style', 'background-color:' .. typeColor[Input.Type])
    :done()
   :tag( 'td' ) -- The Input name
    :attr( 'style', 'text-align: left; background-color:' .. typeColor[Input.Type] )
    :wikitext( Input.Name )
    :done()
   :tag( 'td' ) -- The Output binding post
    :attr( 'rowspan', '2' )
    :attr( 'style', 'background-color:' .. (Output and typeColor[Output.Type] or 'rgba(0,0,0,0)') )
    :done()
   :done()
  :tag( 'tr')
  :attr( 'style', 'height: 50px;')
   :tag( 'td' )
    :attr( 'style', 'text-align: right; border-left: 10px solid var(--color-surface-0); border-bottom: 2px solid var(--color-surface-0); border-top: 18px solid var(--color-surface-0); background-color:' .. (Output and typeColor[Output.Type] or 'rgba(0,0,0,0)') )
    :wikitext( Output and Output.Name or '' )
    :done()
   
end

return p