blob: c624d999669ad064baf8e823105fa4c7b80b9e8e [file] [log] [blame]
#
# Organization Chart
# NOTE: this view of the data is Member-private
PVTCLASS = 'text-warning'
_html do
_base href: '..'
_link rel: 'stylesheet', href: "stylesheets/app.css?#{cssmtime}"
_body? do
_whimsy_body(
title: @role['info']['role'],
breadcrumbs: {
roster: '.',
orgchart: 'orgchart/'
}
) do
id = @role['info']['id'] || @role['info']['chair']
_whimsy_panel_table(
title: "#{@role['info']['role']} - #{ASF::Person.find(id).public_name}",
helpblock: -> {
_ 'Note that this detail page includes '
_span.glyphicon.glyphicon_lock :aria_hidden, class: 'text-primary', aria_label: 'ASF Members Private'
_span ' Member private data.', class: PVTCLASS
}
) do
# ********************************************************************
# * Summary *
# ********************************************************************
_table.table do
_tbody do
@role['info'].each do |key, value|
next if key == 'role'
next unless value
(key =~ /private/i) ? (pvt = PVTCLASS) : (pvt = '')
_tr_ do
_td key, class: pvt
if %w(id chair).include? key
_td class: pvt do
if value == 'tbd'
_span value
else
# TODO allow for multiple holders?
_a value, href: "committer/#{value}"
end
end
elsif %w(reports-to).include? key
_td! class: pvt do
value.split(/[, ]+/).each_with_index do |role, index|
_span ', ' if index > 0
if role == 'members'
_a role, href: "roster/members"
else
_a role, href: "orgchart/#{role}"
end
end
end
elsif %w(email).include? key
_td class: pvt do
_a value, href: "mailto:#{value}"
end
elsif %w(private-list).include? key
_td class: pvt do
if value == 'board-private@apache.org'
_a value, href: "mailto:#{value}"
else
_a value, href: "https://lists.apache.org/list.html?#{value}"
end
end
elsif %w(roster resolution).include? key
_td class: pvt do
_a value, href: value
end
else
_td value, class: pvt
end
_td class: pvt do
_(@desc[key]) if @desc.key?(key)
end
end
end
end
end
# ********************************************************************
# * Oversees *
# ********************************************************************
unless @oversees.empty?
@oversees = @oversees.sort_by {|name, duties| duties['info']['role']}
_ul.list_group do
_li.list_group_item.active do
_h4 'This Officer Oversees'
end
_li.list_unstyled do
_ul style: 'margin-top: 15px; margin-bottom: 15px;' do
@oversees.each do |name, duties|
_li do
_a duties['info']['role'], href: "orgchart/#{name}"
end
end
end
end
end
end
# ********************************************************************
# * Details *
# ********************************************************************
_ul.list_group do
@role.each do |title, text|
next if title == 'info' or title == 'mtime'
_li.list_group_item.active do
(title =~ /private/i) ? _h4.text_capitalize.text_warning(title) : _h4.text_capitalize(title)
end
_li.list_group_item do
_markdown text
end
end
end
# ********************************************************************
# * Source Code *
# ********************************************************************
_ul.list_group do
_li.list_group_item.active do
_h4.text_warning('See This Source File')
end
_li.list_group_item do
txtnam = File.basename("#{env['REQUEST_URI']}")
_a "foundation/officers/personnel-duties/#{txtnam}.txt", href: ASF::SVN.svnpath!('personnel-duties', "#{txtnam}.txt")
end
end
end
end
end
end