Website/lib/ubreporting.rb

93 lines
3.1 KiB
Ruby

require "text.rb"
module UBSOE
def UBSOE::generate_yearly_report(since_year)
puts "-------------------------------------------------------"
puts "| Publications |"
puts "-------------------------------------------------------"
puts ""
#
# Include journal/conference/publication titles, authors,
# event dates and locations, acceptance rate and number
# of pages as appropriate
#
pubs = $db["publications"]
pubs += $db["cv/okennedy/publications_submitted"]
.select { |pub| pub["status"] == "submitted"}
.map { |pub| pub.merge({ "type" => "submitted" }) }
puts(pubs
.select { |pub| pub["year"].to_i >= since_year.to_i }
.map { |pub|
pub_string = [
"\"#{pub["title"]}\"",
pub["authors"].join(", "),
LabMetadata.venue_name(pub),
]
v = LabMetadata.complete_venue(pub)
pub_string.push("#{pub["length"]} pages") if pub.has_key? "length"
pub_string.push("Acceptance rate #{LabMetadata.venue_selectivity(pub)}") unless v["type"] == "techreport"
pub_string.push(v["location"]) if v.has_key? "location"
pub_string.push(v["date"]) if v.has_key? "date"
pub_string.join("\n")
}.join("\n\n------\n\n")
)
puts ""
puts ""
puts "-------------------------------------------------------"
puts "| Presentations |"
puts "-------------------------------------------------------"
puts ""
puts(
$db["cv/okennedy/talks"]
.select { |talk| if /([0-9]{4})/ =~ talk["date"] then $1.to_i >= since_year end }
.map { |talk| "#{talk["talk"]}\n#{talk["date"]}\n#{talk["venue"]}" }
.join("\n\n------\n\n")
)
puts ""
puts ""
puts "-------------------------------------------------------"
puts "| Advising |"
puts "-------------------------------------------------------"
puts ""
puts(
$db["lab/members"]
.map { |k, person|
"#{person["name"]}\n#{person["ubit"]}\n#{person["status"]}"
}
.join("\n\n------\n\n")
)
puts ""
puts ""
puts "-------------------------------------------------------"
puts "| Grants |"
puts "-------------------------------------------------------"
puts ""
puts(
$db["cv/okennedy/grants"]
.select { |grant| grant["status"] == "accepted" }
.select { |grant| if /([0-9]{4})/ =~ grant["start"] then $1.to_i >= since_year end }
.map { |grant|
title = grant["title"]
amount = grant["amount"]
agency = grant["agency"]
effort =
case grant.fetch("effort", nil)
when /([0-9]+)%/ then $1.to_f / 100.0 * amount
when nil then nil
else raise "Unknown effort format #{grant["effort"]}"
end
"#{title}\n#{agency}\n#{TextUtils.format_money(amount)}#{if effort.nil? then "" else " (#{TextUtils.format_money(effort)} by effort)" end}"
}
)
puts
puts
end
end