blob: 6c1e3b3c7817f361140588e738f5503b2198a93b [file] [log] [blame]
#
# Header: title on the left, dropdowns on the right
#
# Also keeps the window/tab title in sync with the header title
#
# Finally: make info dropdown status 'sticky'
class Header < Vue
Header.clock_counter = 0
def initialize
@infodropdown = nil
end
def render
_header.navbar.navbar_fixed_top class: @@item.color do
_div.navbar_brand @@item.title
if @@item.attach =~ /^7/ and @@item.fulltitle =~ /^Establish .* Project/
_PodlingNameSearch item: @@item
end
_span.clock! "\u231B" if Header.clock_counter > 0
_ul.nav.nav_pills.navbar_right do
# pending count
if Pending.count > 0 or Server.offline
_li.label.label_danger do
_span 'OFFLINE: ' if Server.offline
_Link text: Pending.count, href: 'queue'
end
end
# 'info'/'online' dropdown
#
if @@item.attach
_li.report_info.dropdown class: @infodropdown do
_a.dropdown_toggle.info! onClick: self.toggleInfo do
_ 'info'
_b.caret
end
_Info item: @@item, position: 'dropdown-menu'
end
elsif @@item.online
_li.dropdown do
_a.dropdown_toggle.info! data_toggle: "dropdown" do
_ 'online'
_b.caret
end
_ul.online.dropdown_menu @@item.online do |id|
_li do
_a id, href: "/roster/committer/#{id}"
end
end
end
else
_li.dropdown do
_a.dropdown_toggle.info! data_toggle: "dropdown" do
_ 'summary'
_b.caret
end
summary = @@item.summary || Agenda.summary
_table.table_bordered.online.dropdown_menu do
summary.each do |status|
text = status.text
text.sub!(/s$/, '') if status.count == 1
_tr class: status.color do
_td {_Link text: status.count, href: status.href}
_td {_Link text: text, href: status.href}
end
end
end
end
end
# 'navigation' dropdown
#
_li.dropdown do
_a.dropdown_toggle.nav! data_toggle: "dropdown" do
_ 'navigation'
_b.caret
end
_ul.dropdown_menu do
_li { _Link.agenda! text: 'Agenda', href: '.' }
Agenda.index.each do |item|
_li { _Link text: item.index, href: item.href } if item.index
end
_li.divider
_li { _Link text: 'Search', href: 'search' }
_li { _Link text: 'Comments', href: 'comments' }
shepherd = Agenda.shepherd
if shepherd
_li do
_Link.shepherd! text: 'Shepherd', href: "shepherd/#{shepherd}"
end
end
_li { _Link.queue! text: 'Queue', href: 'queue' }
_li.divider
_li { _Link.backchannel! text: 'Backchannel', href: 'backchannel' }
_li { _Link.help! text: 'Help', href: 'help' }
end
end
end
end
end
# toggle info dropdown
def toggleInfo()
@infodropdown = (@infodropdown ? nil : 'open')
end
end