Skip to content

Commit

Permalink
fix JuliaCon time zone; add JuliaCon.talksby
Browse files Browse the repository at this point in the history
  • Loading branch information
carstenbauer committed Jun 20, 2023
1 parent bcefbab commit 2923535
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 18 deletions.
9 changes: 3 additions & 6 deletions src/preferences.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const CACHE_DIR = @load_preference(
)
const TIMEOUT = parse(Float64, @load_preference("timeout", "5.0"))
const TERMINAL_LINKS = parse(Bool, @load_preference("terminal_links", "false"))
const JULIACON_TIMEZONE = tz"UTC"
const JULIACON_TIMEZONE = tz"UTC-4" # Eastern Daylight Time at MIT, Cambridge, USA (2023)
const LOCAL_TIMEZONE = begin
tzstr = @load_preference("local_timezone", "")
if !istimezone(tzstr)
Expand Down Expand Up @@ -67,12 +67,9 @@ Simulates that we are live / in the middle of JuliaCon.
"""
function debugmode(on::Bool=true)
if on
# @eval JuliaCon default_now() = ZonedDateTime(Dates.DateTime("2022-07-20T18:00:00.000"), tz"MET") # JuliaCon2022 workshops
# @eval JuliaCon default_now() = ZonedDateTime(Dates.DateTime("2022-07-30T22:00:00.000"), tz"MET") # JuliaCon2022 posters
@eval JuliaCon function default_now()
return ZonedDateTime(Dates.DateTime("2023-07-27T13:35:00.000"), tz"MET")
# return ZonedDateTime(Dates.DateTime("2022-07-24T18:15:00.000"), tz"America/Los_Angeles")
# return ZonedDateTime(Dates.DateTime("2022-07-24T20:00:00.000"), tz"MET")
return ZonedDateTime(Dates.DateTime("2023-07-27T21:35:00.000"), tz"MET")
# return ZonedDateTime(Dates.DateTime("2023-07-27T12:15:00.000"), JULIACON_TIMEZONE)
end # JuliaCon2023
else
@eval JuliaCon default_now() = TimeZones.now(LOCAL_TIMEZONE)
Expand Down
51 changes: 40 additions & 11 deletions src/schedule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -224,28 +224,49 @@ function get_running_talks(; now=default_now())
return running_talks
end

function _print_running_talks(running_talks; now=default_now())
function _print_talks_list(running_talks; now=default_now(), bold_title=false, show_time=false)
nrow(running_talks) > 0 || return nothing
# println()
# println(Dates.format(default_now(), "HH:MM dd-mm-YYYY"))
for talk in eachrow(running_talks)
println()
printstyled(talk.room; bold=true, color=_room2color(talk.room))
if !show_time
printstyled(talk.room; bold=true, color=_room2color(talk.room))
else
# t = TimeZones.DateTime(talk.start)
t = astimezone(talk.start, timezone(now))
printstyled(Dates.format(t, "E d U Y"), ", ", Dates.format(t, "HH:MM"); bold=true, color=_room2color(talk.room))
print(" in ")
printstyled(talk.room; bold=true, color=_room2color(talk.room))
end
println()
println("\t", talk.title, " (", string(talk.type), ")")
if !bold_title
println("\t", talk.title, " (", string(talk.type), ")")
else
printstyled("\t", talk.title; bold=true, color=:white)
println(" (", string(talk.type), ")")
end
println("\t", "├─ ", _speakers2str(talk.speaker))
println("\t", "├─ ", talk.url)
print("\t", "└─ ");
# printstyled(_add_track_emoji(string(talk.track)); bold=false, color=_track2color(talk.track));
printstyled(talk.track; bold=false, color=_track2color(talk.track));
println()
end
println("\n")
println("(Full schedule: $(CONFERENCE_SCHEDULE_URL))")
# println("\n")
# println("(Full schedule: $(CONFERENCE_SCHEDULE_URL))")
if show_time
println()
if JULIACON_TIMEZONE == timezone(now)
println("(Shown times are in JuliaCon local time.)")
else
println("(Shown times are in the following time zone: $(timezone(now)))")
end
else
println()
end
return nothing
end

function now(::Val{:text}; now)
function now(::Val{:text}; now, show_time)
running_talks = get_running_talks(; now=now)
str = ""
if !isnothing(running_talks)
Expand All @@ -263,14 +284,14 @@ function now(::Val{:text}; now)
return str
end

function now(::Val{:terminal}; now)
function now(::Val{:terminal}; now, show_time)
running_talks = get_running_talks(; now=now)
_print_running_talks(running_talks; now=now)
_print_talks_list(running_talks; now=now, bold_title=true, show_time)
return nothing
end

# A dispatcher for the `now` methods. Default to terminal output.
now(; now=default_now(), output=:terminal) = JuliaCon.now(Val(output); now=now)
now(; now=default_now(), output=:terminal, show_time=false) = JuliaCon.now(Val(output); now=now, show_time=show_time)

function _speakers2str(speaker::Vector{String})
if length(speaker) <= 3
Expand Down Expand Up @@ -486,3 +507,11 @@ function tomorrow(;
)
return today(Val(output); now = now + Dates.Day(1), room, terminal_links, highlighting = false)
end

function talksby(speaker::AbstractString)
jcon = get_conference_schedule()
df = filter(jcon; view=true) do talk
any(contains(s, speaker) for s in talk.speaker)
end
_print_talks_list(df; bold_title=true, show_time=true)
end
2 changes: 1 addition & 1 deletion test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ using TimeZones

@testset "Preferences" begin
@testset "Debug mode" begin
fakenow = ZonedDateTime(Dates.DateTime("2023-07-27T13:35:00.000"), tz"MET")
fakenow = ZonedDateTime(Dates.DateTime("2023-07-27T21:35:00.000"), tz"MET")
@test JuliaCon.default_now() != fakenow
@test isnothing(JuliaCon.debugmode())
@test JuliaCon.default_now() == fakenow
Expand Down

0 comments on commit 2923535

Please sign in to comment.