Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lua/wikis/commons/Map.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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]
Expand Down
1 change: 1 addition & 0 deletions lua/wikis/commons/Widget/GeneralCollapsible/Default.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
103 changes: 103 additions & 0 deletions lua/wikis/commons/Widget/MapPool.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
-- @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'},
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
---@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
Loading