Skip to content
Open
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
10 changes: 10 additions & 0 deletions lua/wikis/commons/Date/Ext.lua
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ DateExt.defaultYear = '0000'

DateExt.defaultTimezone = 'UTC'

local SECONDS_PER_DAY = 86400

--- Parses a date string into a timestamp, returning the number of seconds since UNIX epoch.
--- The timezone offset is incorporated into the timestamp, and the timezone is discarded.
--- If the timezone is not specified, then the date is assumed to be in UTC.
Expand Down Expand Up @@ -254,4 +256,12 @@ function DateExt.calculateAge(to, from)
return age - 1
end

---@param days number
---@return number
---@nodiscard
function DateExt.daysToSeconds(days)
assert(days >= 0, 'Invalid number of days')
return days * SECONDS_PER_DAY
end

return DateExt
37 changes: 34 additions & 3 deletions lua/wikis/commons/MainPageLayout.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,28 @@ local Lua = require('Module:Lua')

local Arguments = Lua.import('Module:Arguments')
local Array = Lua.import('Module:Array')
local Condition = Lua.import('Module:Condition')
local DateExt = Lua.import('Module:Date/Ext')
local Count = Lua.import('Module:Count')
local Image = Lua.import('Module:Image')
local Logic = Lua.import('Module:Logic')
local Table = Lua.import('Module:Table')

local ConditionNode = Condition.Node
local ConditionTree = Condition.Tree
local BooleanOperator = Condition.BooleanOperator
local Comparator = Condition.Comparator
local ColumnName = Condition.ColumnName

local AnalyticsMapping = Lua.import('Module:MainPageLayout/AnalyticsMapping', {loadData = true})
local WikiData = Lua.import('Module:MainPageLayout/data')
local GridWidgets = Lua.import('Module:Widget/Grid')
local HtmlWidgets = Lua.import('Module:Widget/Html/All')
local InMemoryOf = Lua.import('Module:Widget/MainPage/InMemoryOf')
local NavigationCard = Lua.import('Module:Widget/MainPage/NavigationCard')
local PanelWidget = Lua.import('Module:Widget/Panel')
local AnalyticsWidget = Lua.import('Module:Widget/Analytics')
local WidgetUtil = Lua.import('Module:Widget/Util')

local MainPageLayout = {}

Expand All @@ -41,7 +52,7 @@ function MainPageLayout.make(frame)

return HtmlWidgets.Div{
classes = {'mainpage-v2'},
children = {
children = WidgetUtil.collect(
NO_TABLE_OF_CONTENTS,
frame:callParserFunction('DISPLAYTITLE', WikiData.title),
HtmlWidgets.Div{
Expand All @@ -63,6 +74,7 @@ function MainPageLayout.make(frame)
frame:callParserFunction('#searchbox', ''),
}
},
MainPageLayout._makeInMemoryOfDisplay(),
AnalyticsWidget{
analyticsName = 'Quick navigation',
children = {
Expand All @@ -72,11 +84,30 @@ function MainPageLayout.make(frame)
}
}
},
MainPageLayout._makeCells(layout),
},
MainPageLayout._makeCells(layout)
),
}
end

---@return Widget[]?
function MainPageLayout._makeInMemoryOfDisplay()
local passedAwayPlayers = mw.ext.LiquipediaDB.lpdb('player', {
conditions = tostring(ConditionTree(BooleanOperator.all):add{
ConditionNode(ColumnName('deathdate'), Comparator.neq, DateExt.defaultDate),
ConditionNode(ColumnName('deathdate'), Comparator.ge, DateExt.toYmdInUtc(
DateExt.getCurrentTimestamp() - DateExt.daysToSeconds(14)
))
}),
query = 'pagename'
})
if Logic.isEmpty(passedAwayPlayers) then
return
end
return Array.map(passedAwayPlayers, function (player)
return InMemoryOf{pageLink = player.pagename}
end)
end

---@param body (string|Widget|Html|nil)|(string|Widget|Html|nil)[]
---@return (string|Widget|Html|nil)|(string|Widget|Html|nil)[]
function MainPageLayout._processCellBody(body)
Expand Down
2 changes: 1 addition & 1 deletion lua/wikis/commons/MatchGroup/Input/Util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ MatchGroupInputUtil.WINNER_DRAW = 0

local ASSUME_FINISHED_AFTER = {
EXACT = 30800,
ESTIMATE = 86400,
ESTIMATE = DateExt.daysToSeconds(1),
}
MatchGroupInputUtil.ASSUME_FINISHED_AFTER = ASSUME_FINISHED_AFTER

Expand Down
3 changes: 2 additions & 1 deletion lua/wikis/commons/NotabilityChecker.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ local Lua = require('Module:Lua')

local Array = Lua.import('Module:Array')
local Class = Lua.import('Module:Class')
local DateExt = Lua.import('Module:Date/Ext')
local Config = Lua.import('Module:NotabilityChecker/config')
local Info = Lua.import('Module:Info', {loadData = true})
local Logic = Lua.import('Module:Logic')
Expand All @@ -19,7 +20,7 @@ local NotabilityChecker = {}

local LANG = mw.getContentLanguage()
local NOW = os.time()
local SECONDS_IN_YEAR = 365.2425 * 86400
local SECONDS_IN_YEAR = DateExt.daysToSeconds(365.2425)
local MAX_NUMBER_OF_PARTICIPANTS = Config.MAX_NUMBER_OF_PARTICIPANTS or Info.config.defaultMaxPlayersPerPlacement or 10

NotabilityChecker.LOGGING = true
Expand Down
6 changes: 2 additions & 4 deletions lua/wikis/commons/TournamentsSummaryTable.lua
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ local BooleanOperator = Condition.BooleanOperator
local ColumnName = Condition.ColumnName
local ConditionUtil = Condition.Util

local SECONDS_PER_DAY = 86400

local _today = os.date('!%Y-%m-%d', os.time())

-- Default settings
Expand Down Expand Up @@ -193,9 +191,9 @@ function TournamentsSummaryTable.dateConditions(type)

local currentTime = os.time()
local upcomingThreshold = os.date('!%Y-%m-%d', currentTime
+ TournamentsSummaryTable.upcomingOffset * SECONDS_PER_DAY)
+ DateExt.daysToSeconds(TournamentsSummaryTable.upcomingOffset))
local completedThreshold = os.date('!%Y-%m-%d', currentTime
- TournamentsSummaryTable.completedOffset * SECONDS_PER_DAY)
- DateExt.daysToSeconds(TournamentsSummaryTable.completedOffset))

if type == TournamentsSummaryTable.upcomingType then
conditions:add{
Expand Down
3 changes: 2 additions & 1 deletion lua/wikis/commons/TransferRow.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ local Lua = require('Module:Lua')

local Array = Lua.import('Module:Array')
local Class = Lua.import('Module:Class')
local DateExt = Lua.import('Module:Date/Ext')
local Faction = Lua.import('Module:Faction')
local Flags = Lua.import('Module:Flags')
local FnUtil = Lua.import('Module:FnUtil')
Expand Down Expand Up @@ -218,7 +219,7 @@ function TransferRow._shiftDate(dateInput)

local year, month, day = dateInput:match('(%d+)-(%d+)-(%d+)')
local date = os.time{day=day, month=month, year=year}
date = date - 86400
date = date - DateExt.daysToSeconds(1)
return os.date( "%Y-%m-%d", date) --[[@as string]]
end

Expand Down
4 changes: 3 additions & 1 deletion lua/wikis/commons/Widget/Infobox/UpcomingTournaments.lua
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ end
function UpcomingTournamentsWidget:_getTournaments()
local conditions = ConditionTree(BooleanOperator.all)
:add(self.props.opponentConditions)
:add(ConditionNode(ColumnName('date'), Comparator.gt, DateExt.getCurrentTimestamp() - 86400))
:add(ConditionNode(
ColumnName('date'), Comparator.gt, DateExt.getCurrentTimestamp() - DateExt.daysToSeconds(1)
))
:add(ConditionNode(ColumnName('placement'), Comparator.eq, ''))

local placements = mw.ext.LiquipediaDB.lpdb('placement', {
Expand Down
Loading