跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
学习园地
新人须知
教程整合
NEW!!!
主题编号使用指导
论坛百科
SS分区介绍
论坛设定
论坛文化
传奇殿堂
SS大事年表
SS大学图书馆
维基事务
基本规则
新手指南——技术
新手指南——内容
wiki语法手册
规范全集
搜索
搜索
外观
登录
个人工具
登录
查看“︁模块:AutoTabTable”︁的源代码
模块
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
模块:AutoTabTable
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local params = {} params["prefix" ] = {'a', 'i', 'e'} params["tab_prefix" ] = 'tab_header' params["display_title" ] = {'false'} params["title" ] = "表格默认标题" params["item_per_tab" ] = "50" params["min_width" ] = "80%" params["max_width" ] = "fit-content" params["max_height" ] = "fit-content" params["margin" ] = "" params["shadow" ] = "0px 0px 0px #878787" params["tab_color" ] = "#004B97" params["tab_bg_color" ] = "#ffffff" params["header" ] = {'作者', '主题', '简介'} params["color" ] = {'#000000', '#000000', '#000000'} params["bg_color" ] = {'#f8f9fa', '#f8f9fa', '#f8f9fa'} params["text" ] = {'center', 'center', 'left'} params["color_alt" ] = {'#202122', '#202122', '#202122'} params["bg_color_alt" ] = {'#f8f9fa', '#f8f9fa', '#f8f9fa'} params["header_color" ] = {'#000000', '#000000', '#000000'} params["header_bg_color" ] = {'#d2d3d4', '#d2d3d4', '#d2d3d4'} params["display" ] = {'true', 'true', 'true'} params["col_width" ] = {'50px', '350px', '350px'} params["col_height" ] = {'fit-content', 'fit-content', 'fit-content'} params["border_color" ] = { '#878787 #878787 #878787 #878787', '#878787 #878787 #878787 #878787', '#878787 #878787 #878787 #878787', } params["header_border_color" ] = { '#878787 #878787 #878787 #878787', '#878787 #878787 #878787 #878787', '#878787 #878787 #878787 #878787', } params["border_style" ] = { "solid solid solid solid", "solid solid solid solid", "solid solid solid solid", } params["header_border_style" ] = { "solid solid solid solid", "solid solid solid solid", "solid solid solid solid", } params["border_width" ] = { "1px 1px 1px 1px", "1px 1px 1px 1px", "1px 1px 1px 1px", } params["header_border_width" ] = { "1px 1px 1px 1px", "1px 1px 1px 1px", "1px 1px 1px 1px", } local global_param_list = { "title", "display_title", "item_per_tab", "min_width", "max_width", "max_height", "shadow", "margin", "tab_color", "tab_bg_color" } local col_param_list = { "header" , "color" , "bg_color" , "color_alt" , "bg_color_alt" , "header_color" , "header_bg_color" , "display" , "col_width" , "col_height" , "border_color" , "header_border_color" , "border_style" , "header_border_style" , "border_width" , "header_border_width" , "text" , } function renderHeader(tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local header_th = row:tag('th') header_th :wikitext(params["header"][i]) :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('height' , params["col_height" ][i]) :css('color' , params["header_color" ][i]) :css('background-color' , params["header_bg_color" ][i]) :css('border-width' , params["header_border_width" ][i]) :css('border-color' , params["header_border_color" ][i]) :css('border-style' , params["header_border_style" ][i]) :css('text-align' , params["text" ][i]) end end end function renderRow(row_id, args, tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local info = row:tag('td') info :wikitext(args[params["prefix"][i] .. row_id]) --单元格样式 :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('height' , params["col_height" ][i]) :css('border-width' , params["border_width" ][i]) :css('border-color' , params["border_color" ][i]) :css('border-style' , params["border_style" ][i]) :css('text-align' , params["text" ][i]) if row_id % 2 == 0 then info :css('color' , params["color" ][i]) :css('background-color' , params["bg_color" ][i]) else info :css('color' , params["color_alt" ][i]) :css('background-color' , params["bg_color_alt" ][i]) end end end end --处理表格 function renderTable(args, row_ids) local tbl = mw.html.create('table') :addClass('wikitable') :addClass('mw-collapsible') :addClass('plainrowheaders') :css('overflow-x', 'auto') :css('width', "fit-content") :css('height', "fit-content") if args['collapsed'] then tbl:addClass('mw-collapsed') end if params["display_title"] == "true" then local caption = tbl:tag('caption') caption :wikitext(title) :css('white-space', 'nowrap') end renderHeader(tbl) for _, a in ipairs(row_ids) do renderRow(a, args, tbl) end return tbl end function renderTabs(args) -- extract row_ids in each tables -- i hate lua why array subscribtion starts at 1 local tot_row_ids = {} for k, _ in pairs(args) do local anum = ('' .. k):match('^a(%d+)$') if anum then table.insert(tot_row_ids, tonumber(anum)) end end table.sort(tot_row_ids) local tab_count = 0 local current_item_count = 0 local current_max_item = tonumber(params["item_per_tab"]) local tabs_row_ids = {} for i, a in ipairs(tot_row_ids) do if current_item_count == 0 then if tab_count ~= 0 then table.sort(tabs_row_ids[tab_count]) end tab_count = tab_count + 1 if args["item_in_tab"..tostring(tab_count)] then current_max_item = tonumber(args["item_in_tab"..tostring(tab_count)]) else current_max_item = tonumber(params["item_per_tab"]) end tabs_row_ids[tab_count] = {} end table.insert(tabs_row_ids[tab_count], a) current_item_count = current_item_count + 1 if current_item_count == current_max_item then current_item_count = 0 end end -- if only one table is needed... if tab_count == 1 then local constraint_div = mw.html.create('div') constraint_div :css("max-width", params["max_width"]) :css("min-width", params["min_width"]) :css("max-height", params["max_height"]) :css("box-shadow", params["shadow"]) :css("margin", params["margin"]) local tbl = renderTable(args, tot_row_ids) constraint_div:node(tbl) return constraint_div end -- create tabs-container local tabs_div = mw.html.create('div') tabs_div :addClass("tabs-container") :css("max-width", params["max_width"]) :css("min-width", params["min_width"]) :css("max-height", params["max_height"]) :css("box-shadow", params["shadow"]) :css("margin", params["margin"]) -- create tab ui list local tab_list = tabs_div:tag("ul") tab_list :addClass("tabs-pages") :css("margin", "0") :css("overflow-x", "auto") local current_count = 1 for i, row_ids in ipairs(tabs_row_ids) do local list_ele = tab_list:tag("li") if i == 1 then list_ele:addClass("active") end local ele_title = list_ele :addClass("tab") :tag("strong") if args[params['tab_prefix']..tostring(i)] then ele_title:wikitext(args[params['tab_prefix']..tostring(i)]) else ele_title:wikitext(tostring(current_count).."~"..tostring(current_count+tableLength(row_ids)-1)) end current_count = current_count + tableLength(row_ids) end -- create actual tables local tables_list = tabs_div:tag("div") tables_list :addClass("tabs-contents") :css("width", "auto") :css("height", "auto") for i, row_ids in ipairs(tabs_row_ids) do local table_ele = tables_list:tag("div") if i == 1 then table_ele:addClass("active") end table_ele :addClass("tab-c") :css("width", "auto") :css("height", "auto") local inner_content = table_ele:tag("div") inner_content :addClass("inner-content") :css("columns", "1") :css("width", "auto") :css("height", "auto") local content_tbl = renderTable(args, row_ids) inner_content:node(content_tbl) end return tabs_div end function tableLength(t) local count = 0 for _ in pairs(t) do count = count + 1 end return count end function p._historicalActivity(args) -- deal with params for _, key in ipairs(global_param_list) do if args[key] then params[key] = args[key] end end for _, key in ipairs(col_param_list) do for i=1,3 do if args[key..tostring(i)] then params[key][i] = args[key..tostring(i)] end end end --处理表格 local tb1 = renderTabs(args) local res = mw.html.create() res:node(tb1) return tostring(res) end function p.historicalActivity(frame) local args = {} local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数 --将获取的参数传给args for k, v in pairs(parent_args) do if v ~= '' then args[k] = v end end return p._historicalActivity(args) end return p
该页面使用的模板:
模块:AutoTabTable/doc
(
查看源代码
)
返回
模块:AutoTabTable
。