From cfa49b1b9538d16e0aa2d26a19764300d54a59f0 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:05:58 +0900 Subject: [PATCH 1/7] use pageifyLink in map query --- lua/wikis/commons/Map.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/Map.lua b/lua/wikis/commons/Map.lua index b03a8beb9fe..f9ba812ed16 100644 --- a/lua/wikis/commons/Map.lua +++ b/lua/wikis/commons/Map.lua @@ -10,6 +10,7 @@ local Lua = require('Module:Lua') local Array = Lua.import('Module:Array') local DateExt = Lua.import('Module:Date/Ext') local Logic = Lua.import('Module:Logic') +local Page = Lua.import('Module:Page') local Table = Lua.import('Module:Table') local Condition = Lua.import('Module:Condition') @@ -73,7 +74,7 @@ function Map.getMapByPageName(pageName) ---@cast pageName -nil return Map.queryMaps{ - additionalConditions = ConditionNode(ColumnName('pagename'), Comparator.eq, pageName:gsub(' ', '_')), + additionalConditions = ConditionNode(ColumnName('pagename'), Comparator.eq, Page.pageifyLink(pageName)), limit = 1, order = 'date desc' }[1] From 86a1264a907620760941ffbfa62934d78702da99 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:06:16 +0900 Subject: [PATCH 2/7] add css field to generalcollapsible --- lua/wikis/commons/Widget/GeneralCollapsible/Default.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/wikis/commons/Widget/GeneralCollapsible/Default.lua b/lua/wikis/commons/Widget/GeneralCollapsible/Default.lua index 46fc71fa9ed..8a20e8e1ac3 100644 --- a/lua/wikis/commons/Widget/GeneralCollapsible/Default.lua +++ b/lua/wikis/commons/Widget/GeneralCollapsible/Default.lua @@ -25,6 +25,7 @@ function DefaultCollapsible:render() local props = self.props return Div{ attributes = props.attributes, + css = props.css, classes = Array.extend({}, 'general-collapsible', props.shouldCollapse and 'collapsed' or nil, From 267dab1f56858ac30c458f6ade46dd00c4bc4ab6 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:07:17 +0900 Subject: [PATCH 3/7] add original impl from wiki --- lua/wikis/commons/Widget/MapPool.lua | 92 ++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 lua/wikis/commons/Widget/MapPool.lua diff --git a/lua/wikis/commons/Widget/MapPool.lua b/lua/wikis/commons/Widget/MapPool.lua new file mode 100644 index 00000000000..57541239cb8 --- /dev/null +++ b/lua/wikis/commons/Widget/MapPool.lua @@ -0,0 +1,92 @@ +--- +-- @Liquipedia +-- page=Module:Widget/MapPool +-- +-- Please see https://github.com/Liquipedia/Lua-Modules to contribute +-- + +local Lua = require('Module:Lua') + +local Array = Lua.import('Module:Array') +local Class = Lua.import('Module:Class') +local Logic = Lua.import('Module:Logic') +local Map = Lua.import('Module:Map') +local MapModes = Lua.import('Module:MapModes') + +local GeneralCollapsible = Lua.import('Module:Widget/GeneralCollapsible/Default') +local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local Div = HtmlWidgets.Div +local Link = Lua.import('Module:Widget/Basic/Link') +local Widget = Lua.import('Module:Widget') +local WidgetUtil = Lua.import('Module:Widget/Util') + +---@class MapPool: Widget +---@operator call(table?): MapPool +local MapPool = Class.new(Widget) + +---@return Widget +function MapPool:render() + return Div{ + children = GeneralCollapsible{ + title = 'Map Pool', + classes = {'wiki-backgroundcolor-light'}, + attributes = {style = 'display:flex;flex-direction:column;padding:0.5rem;border-radius:0.5rem'}, + shouldCollapse = true, + children = { + Div{ + css = { + display = 'flex', + ['flex-wrap'] = 'wrap', + gap = '0.5rem', + ['padding-top'] = '0.5rem', + }, + children = Array.mapIndexes(function (index) + local mode = self.props['mode' .. index] + if Logic.isEmpty(mode) then + return + end + return HtmlWidgets.Table{ + classes = {'wikitable', 'wikitable-striped'}, + css = { + ['border-radius'] = '0.5rem', + overflow = 'hidden', + flex = '1 0 18%', + ['white-space'] = 'nowrap' + }, + children = WidgetUtil.collect( + HtmlWidgets.Tr{children = HtmlWidgets.Th{ + css = { + height = '2.5rem', + padding = '0.2em 0.5rem' + }, + children = { + MapModes.get{mode = mode}, + ' ', + Link{link = mode} + } + }}, + Array.map(Array.parseCommaSeparatedString(self.props['map' .. index]), function (mapPage) + local map = Map.getMapByPageName(mw.ext.TeamLiquidIntegration.resolve_redirect(mapPage)) or {} + return HtmlWidgets.Tr{children = HtmlWidgets.Td{ + css = { + ['text-align'] = 'center', + padding = '0.2em 0.5rem' + }, + children = { + Link{ + link = map.pageName or mapPage, + children = map.displayName or mapPage + } + } + }} + end) + ) + } + end) + } + } + } + } +end + +return MapPool From 1e9f8760090e30856e5371de4b730eb09c0b65a5 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:08:29 +0900 Subject: [PATCH 4/7] use css prop --- lua/wikis/commons/Widget/MapPool.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lua/wikis/commons/Widget/MapPool.lua b/lua/wikis/commons/Widget/MapPool.lua index 57541239cb8..3e14d7bc9ba 100644 --- a/lua/wikis/commons/Widget/MapPool.lua +++ b/lua/wikis/commons/Widget/MapPool.lua @@ -30,7 +30,12 @@ function MapPool:render() children = GeneralCollapsible{ title = 'Map Pool', classes = {'wiki-backgroundcolor-light'}, - attributes = {style = 'display:flex;flex-direction:column;padding:0.5rem;border-radius:0.5rem'}, + css = { + display = 'flex', + ['flex-direction'] = 'column', + padding = '0.5rem', + ['border-radius'] = '0.5rem', + }, shouldCollapse = true, children = { Div{ From 4ed0c27a1bb03e0a64b495e6933c4dfaf1dd93dd Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:09:22 +0900 Subject: [PATCH 5/7] kick resolve_redirect from map pool widget --- lua/wikis/commons/Widget/MapPool.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/wikis/commons/Widget/MapPool.lua b/lua/wikis/commons/Widget/MapPool.lua index 3e14d7bc9ba..0aa0958de4c 100644 --- a/lua/wikis/commons/Widget/MapPool.lua +++ b/lua/wikis/commons/Widget/MapPool.lua @@ -71,7 +71,7 @@ function MapPool:render() } }}, Array.map(Array.parseCommaSeparatedString(self.props['map' .. index]), function (mapPage) - local map = Map.getMapByPageName(mw.ext.TeamLiquidIntegration.resolve_redirect(mapPage)) or {} + local map = Map.getMapByPageName(mapPage) or {} return HtmlWidgets.Tr{children = HtmlWidgets.Td{ css = { ['text-align'] = 'center', From d4a0024f8f1e6c79e6fba19957437c7f737bdc51 Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:16:08 +0900 Subject: [PATCH 6/7] refactor --- lua/wikis/commons/Widget/MapPool.lua | 82 +++++++++++++++------------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/lua/wikis/commons/Widget/MapPool.lua b/lua/wikis/commons/Widget/MapPool.lua index 0aa0958de4c..beb75b57659 100644 --- a/lua/wikis/commons/Widget/MapPool.lua +++ b/lua/wikis/commons/Widget/MapPool.lua @@ -50,43 +50,7 @@ function MapPool:render() if Logic.isEmpty(mode) then return end - return HtmlWidgets.Table{ - classes = {'wikitable', 'wikitable-striped'}, - css = { - ['border-radius'] = '0.5rem', - overflow = 'hidden', - flex = '1 0 18%', - ['white-space'] = 'nowrap' - }, - children = WidgetUtil.collect( - HtmlWidgets.Tr{children = HtmlWidgets.Th{ - css = { - height = '2.5rem', - padding = '0.2em 0.5rem' - }, - children = { - MapModes.get{mode = mode}, - ' ', - Link{link = mode} - } - }}, - Array.map(Array.parseCommaSeparatedString(self.props['map' .. index]), function (mapPage) - local map = Map.getMapByPageName(mapPage) or {} - return HtmlWidgets.Tr{children = HtmlWidgets.Td{ - css = { - ['text-align'] = 'center', - padding = '0.2em 0.5rem' - }, - children = { - Link{ - link = map.pageName or mapPage, - children = map.displayName or mapPage - } - } - }} - end) - ) - } + return self:_renderMapsInMode(mode, Array.parseCommaSeparatedString(self.props['map' .. index])) end) } } @@ -94,4 +58,48 @@ function MapPool:render() } end +---@private +---@param mode string +---@param mapInput string[] +---@return Widget +function MapPool:_renderMapsInMode(mode, mapInput) + return HtmlWidgets.Table{ + classes = {'wikitable', 'wikitable-striped'}, + css = { + ['border-radius'] = '0.5rem', + overflow = 'hidden', + flex = '1 0 18%', + ['white-space'] = 'nowrap' + }, + children = WidgetUtil.collect( + HtmlWidgets.Tr{children = HtmlWidgets.Th{ + css = { + height = '2.5rem', + padding = '0.2em 0.5rem' + }, + children = { + MapModes.get{mode = mode}, + ' ', + Link{link = mode} + } + }}, + Array.map(mapInput, function (mapPage) + local map = Map.getMapByPageName(mapPage) or {} + return HtmlWidgets.Tr{children = HtmlWidgets.Td{ + css = { + ['text-align'] = 'center', + padding = '0.2em 0.5rem' + }, + children = { + Link{ + link = map.pageName or mapPage, + children = map.displayName or mapPage + } + } + }} + end) + ) + } +end + return MapPool From 7d436474dba93ba3c7d9a2db7e1fd1a51b267def Mon Sep 17 00:00:00 2001 From: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> Date: Sun, 5 Oct 2025 14:16:36 +0900 Subject: [PATCH 7/7] reduce indentation level --- lua/wikis/commons/Widget/MapPool.lua | 54 ++++++++++++++-------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/lua/wikis/commons/Widget/MapPool.lua b/lua/wikis/commons/Widget/MapPool.lua index beb75b57659..c2a0c1e31d6 100644 --- a/lua/wikis/commons/Widget/MapPool.lua +++ b/lua/wikis/commons/Widget/MapPool.lua @@ -26,36 +26,34 @@ local MapPool = Class.new(Widget) ---@return Widget function MapPool:render() - return Div{ - children = GeneralCollapsible{ - title = 'Map Pool', - classes = {'wiki-backgroundcolor-light'}, - css = { - display = 'flex', - ['flex-direction'] = 'column', - padding = '0.5rem', - ['border-radius'] = '0.5rem', - }, - shouldCollapse = true, - children = { - Div{ - css = { - display = 'flex', - ['flex-wrap'] = 'wrap', - gap = '0.5rem', - ['padding-top'] = '0.5rem', - }, - children = Array.mapIndexes(function (index) - local mode = self.props['mode' .. index] - if Logic.isEmpty(mode) then - return - end - return self:_renderMapsInMode(mode, Array.parseCommaSeparatedString(self.props['map' .. index])) - end) - } + return Div{children = GeneralCollapsible{ + title = 'Map Pool', + classes = {'wiki-backgroundcolor-light'}, + css = { + display = 'flex', + ['flex-direction'] = 'column', + padding = '0.5rem', + ['border-radius'] = '0.5rem', + }, + shouldCollapse = true, + children = { + Div{ + css = { + display = 'flex', + ['flex-wrap'] = 'wrap', + gap = '0.5rem', + ['padding-top'] = '0.5rem', + }, + children = Array.mapIndexes(function (index) + local mode = self.props['mode' .. index] + if Logic.isEmpty(mode) then + return + end + return self:_renderMapsInMode(mode, Array.parseCommaSeparatedString(self.props['map' .. index])) + end) } } - } + }} end ---@private