转跳到内容

新人报到


只显示该作者

只有该作者的内容显示中。 返回到主题

推荐贴

12 小时前, willson-v- 说道:

嗯...我整了一个功能类似但是是向右拓展的表格,不知道是不是你要的那种(

顺便我增加了一批自定义选项,我觉得行开关用自定义选项可能会比较好(

  显示隐藏内容
local p = {}
local prefix                = {'a', 'i', 'e'}
local title                 = {'作者', '主题', '简介'}
local color                 = {'#004B97', '#0066CC', '#0066CC'}
local bg_color              = {'#FF9224', '#FFDCB9', '#FFE4CA'}
local border_color          = {
                                '#FF9224 #D26900 #D26900 #D26900',
                                '#FFDCB9 #D26900 #FF9224 #D26900',
                                '#D26900 #D26900 #FF9224 #D26900',
                              }
local header_border_color   = {
                                '#FF9224 #D26900 #D26900 #D26900',
                                '#FFAD86 #D26900 #FFAD86 #D26900',
                                '#D26900 #D26900 #FF9224 #D26900',
                            }
local header_color          = {'#004B97', '#0066CC', '#0066CC'}
local header_bg_color       = {'#FF9224', '#FFAD86', '#FFAD86'}
local row_top               = {'double', 'double', 'double'}
local row_bottom            = {'double', 'double', 'double'}
local row_left              = {'dashed', 'dashed', 'dashed'}
local row_right             = {'double', 'double', 'double'}
local header_top            = {'double', 'double', 'double'}
local header_bottom         = {'double', 'double', 'double'}
local header_left           = {'double', 'double', 'double'}
local header_right          = {'dashed', 'dashed', 'dashed'}
local display               = {'true', 'true', 'true'}
 
function renderRow(row_id, args, valid_a, tbl)
    local row = tbl:tag('tr')
    
    local header = row:tag('th')
    header
        :wikitext(title[row_id])
        :css('color'                , header_color[row_id])
        :css('padding'              ,'10px')
        :css('background-color'     , header_bg_color[row_id])
        :css('border-width'         , '1px 3px 1px 5px')
        :css('border-color'         , header_border_color[row_id])
        :css('border-top-style'     , header_top   [row_id])
        :css('border-bottom-style'  , header_bottom[row_id])
        :css('border-left-style'    , header_left  [row_id])
        :css('border-right-style'   , header_right [row_id])
    
        
    for i, anum in ipairs(valid_a) do
        local info = row:tag('td')
        info
            :wikitext(args[prefix[row_id] .. anum]) --单元格样式
            :css('color'                , color[row_id])
            :css('padding'              , '10px')
            :css('background-color'     , bg_color[row_id])
            :css('border-width'         , '1px 3px 1px 5px')
            :css('border-color'         , border_color[row_id])
            :css('border-top-style'     , row_top   [row_id])
            :css('border-bottom-style'  , row_bottom[row_id])
            :css('border-left-style'    , row_left  [row_id])
            :css('border-right-style'   , row_right [row_id])
    end
end

--处理表格
function renderMainTable(args, valid_a)
    local tbl = mw.html.create('table')
        :addClass('wikitable')
        :css('width', '60%')
    
    for i=1,3 do
        if args['title' .. i] then
            title[i] = args['title' .. i]
        end
        if args['color' .. i] then
            color[i] = args['color' .. i]
        end
        if args['bg_color' .. i] then
            bg_color[i] = args['bg_color' .. i]
        end
        if args['border_color' .. i] then
            border_color[i] = args['border_color' .. i]
        end
        if args['header_border_color' .. i] then
            header_border_color[i] = args['header_border_color' .. i]
        end
        if args['header_color' .. i] then
            header_color[i] = args['header_color' .. i]
        end
        if args['header_bg_color' .. i] then
            header_bg_color[i] = args['header_bg_color' .. i]
        end
        if args['row_top' .. i] then
            row_top[i] = args['row_top' .. i]
        end
        if args['row_bottom' .. i] then
            row_bottom[i] = args['row_bottom' .. i]
        end
        if args['row_left' .. i] then
            row_left[i] = args['row_left' .. i]
        end
        if args['row_right' .. i] then
            row_right[i] = args['row_right' .. i]
        end
        if args['header_top' .. i] then
            header_top[i] = args['header_top' .. i]
        end
        if args['header_bottom' .. i] then
            header_bottom[i] = args['header_bottom' .. i]
        end
        if args['header_left' .. i] then
            header_left[i] = args['header_left' .. i]
        end
        if args['header_right' .. i] then
            header_right[i] = args['header_right' .. i]
        end
        if args['display' .. i] then
            display[i] = args['display' .. i]
        end

        if display[i] == "true" then
            renderRow(i, args, valid_a, tbl)
        end
    end
 
    return tbl
end
 
function p._historicalActivity(args)
    local valid_a = {}
    
    for k, v in pairs(args) do--计算行数
        local anum = ('' .. k):match('^a(%d+)$')
        if anum then table.insert(valid_a, tonumber(anum)) end
    end
    table.sort(valid_a)
 
    --处理表格
    local tb1 = renderMainTable(args, valid_a)
 
    local res = mw.html.create()
    res:node(tb1)
 
    return tostring(res)
end
 
function p.historicalActivity(frame)
    local args = {}
    local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数
 
    -- Out of order parsing bug.
    -- 不懂
    -- local temp;
    -- for i = 1, 50 do
    --     temp = parent_args["a" .. tostring(i)];
    --     temp = parent_args["i" .. tostring(i)];
    --     temp = parent_args["e" .. tostring(i)];
    -- end
    
    --将获取的参数传给args
    for k, v in pairs(parent_args) do
        if v ~= '' then
            args[k] = v
        end
    end
    return p._historicalActivity(args)
end
 
return p

 

现在这个模块在萌百我的个人lua沙盒那里,并且现在(暂时地)用着沙盒模板(Template:Sandbox)作为外层模板;如果沙盒模板有别人做实验内容被破坏了的话,把里面的内容重新编辑成这个就好:

  隐藏内容
<noinclude><!-- 请勿删除此行 -->{{帮助导航}}{{沙盒顶部}}<!-- 请勿删除此行 --></noinclude>

{{#invoke:Sandbox/willson0v0/LinearTable|historicalActivity}}

可以自定义一些属性(属性都有默认值不用全都手动设置),例如,...|title1=第一行标题|...就定义了第一行标题、...|bg_color2=#66ccff|...就定义了第二行单元格的背景色,所有可以自定义的属性如下([3]替换成1/2/3不保留中括号没有空格):

  1. title[x]:第x行表格标题

  2. color[x]:第x行单元格字体色

  3. bg_color[x]:第x行单元格背景色

  4. border_color[x]:第x行单元格边框颜色,每个包含4个颜色值,以top right bottom left顺序,中间一个空格(比如说,...|border_color1=#00FF00 #00FF00 #00FF00 #00FF00|...就会把第一行的边框四边都设成死亡荧光绿)

  5. header_color[x]:第x行标题栏字体色

  6. header_bg_color[x]:第x行标题栏背景色

  7. header_border_color[x]:第x行标题栏边框颜色,和border_color类似

  8. row_top[x]:第x行单元格上侧边框样式,具体可以参考这里列出的边框样式(比如说,...|row_top2=dashed|...就会让第二行单元格的上侧边框设置成短横线的样子)

  9. row_bottom[x]、row_left[x]、row_right[x]:类似于row_top[x]

  10. header_top[x]:第x行标题栏上侧边框样式,类似于row_top[x]

  11. header_bottom[x]、header_left[x]、header_right[x]:类似于header_top[x]

  12. display[x]:决定第x行是否显示(比如说,...|display3=false|...就会让第三行整个消失)

最后是一个小栗子:

image.thumb.png.2d53e6aff39dce3d40bf4ddda0b6520e.png

有关百科填写员...主要是我现在刚来,还不是很清楚在做什么/要做什么/能做什么,不过有需要的话可以召唤我就是了(

:wn002:大佬太强了 泥潭很多模版都是抄萌百的() 这是幕僚团纳新帖——[情报] 【活动栏/红包】新幕僚纳新宣传🎉(7/29 Ver1.0 正式版放送 有兴趣就看看吧xddd

链接到点评
  • 攸薩锁定了本主题
游客
此主题已关闭。
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款