www/roster/views/ppmc/members.js.rb (164 lines of code) (raw):
#
# Show PPMC members
#
class PPMCMembers < Vue
def render
_h2.ppmc! 'PPMC (' + roster.length + ')'
_p '(the listing below excludes mentors)'
_table.table.table_hover do
_thead do
_tr do
_th if @@auth.ppmc
_th 'id', data_sort: 'string'
_th 'githubUsername', data_sort: 'string'
_th.sorting_asc 'public name', data_sort: 'string-ins'
_th 'notes'
end
end
_tbody do
roster.each do |person|
next if @@ppmc.mentors.include? person.id
_PPMCMember auth: @@auth, person: person, ppmc: @@ppmc
end
end
end
if @@ppmc.analysePrivateSubs or @@ppmc.isOwner
_h4.crosscheck! 'Cross-check of private@ list subscriptions'
_p {
_ 'PPMC entries above with (*) do not appear to be subscribed to the private list.'
_br
_ 'This could be because the person is subscribed with an address that is not in their LDAP record'
}
# separate out the known ASF members and extract any matching committer details
unknownSubs = @@ppmc.unknownSubs
asfMembers = @@ppmc.asfMembers
# Any unknown subscribers?
if unknownSubs.length > 0
_p {
# We don't use the short-hand name: value syntax here to work-round Eclipse Ruby editor parsing bug
_span.glyphicon.glyphicon_lock aria_hidden: true, :class => 'text-primary', 'aria-label' => 'ASF Members and private@ moderators'
_ 'The following subscribers to the private list do not match the known emails for any of the existing PPMC (or ASF) members.'
_br
_ 'They could be PPMC (or ASF) members whose emails are not listed in their LDAP record.'
_br
_ 'Or they could be ex-PPMC members who are still subscribed.'
_br
_br
_ul {
unknownSubs.each do |sub|
person = sub['person']
if person
_li {
_ sub['addr']
_ ' '
_ person['name']
_ ' '
_a person['id'], href: "committer/#{person['id']}"
}
else
_li {
_ sub['addr']
_ ' '
_ '(not recognised)'
}
end
end
}
}
end
# Any ASF members?
if asfMembers.length > 0
_p {
# We don't use the short-hand name: value syntax here to work-round Eclipse Ruby editor parsing bug
_span.glyphicon.glyphicon_lock aria_hidden: true, :class => 'text-primary', 'aria-label' => 'ASF Members and private@ moderators'
_ 'The following ASF members are also subscribed to the list.'
_br
_br
_ul {
asfMembers.each do |sub|
person = sub['person']
if person
_li {
_strong {
_ sub['addr']
_ ' '
_ person['name']
_ ' '
_a person['id'], href: "committer/#{person['id']}"
}
}
end
end
}
}
end
else
_h4 'Sorry, you do not have access to show private list subscription checks'
end
end
def mounted()
jQuery('.table', $el).stupidtable()
end
# compute roster
def roster
result = []
@@ppmc.owners.each do |id|
person = @@ppmc.roster[id]
person.id = id
result << person
end
result.sort_by {|person| person.name}
end
end
#
# Show a member of the PPMC
#
class PPMCMember < Vue
def render
_tr do
if @@auth.ppmc
_td do
_input type: 'checkbox', checked: @@person.selected || false,
onChange: -> {self.toggleSelect(@@person)}
end
end
if @@person.member == true # full member
_td { _b { _a @@person.id, href: "committer/#{@@person.id}" }
_a ' (*)', href: "ppmc/#{@@ppmc.id}#crosscheck" if @@person.notSubbed
}
_td @@person.githubUsername
_td { _b @@person.name }
elsif @@person.member
_td { _i { _a @@person.id, href: "committer/#{@@person.id}" }
_a ' (*)', href: "ppmc/#{@@ppmc.id}#crosscheck" if @@person.notSubbed
}
_td @@person.githubUsername
_td { _i @@person.name
_ ' ('
_ @@person.member.sub(%r{( \(Non-voting\))? Member}, '').sub(%r{^Emeritus}, 'ASF Emeritus')
_ ')'
}
else
_td { _a @@person.id, href: "committer/#{@@person.id}"
_a ' (*)', href: "ppmc/#{@@ppmc.id}#crosscheck" if @@person.notSubbed
}
_td @@person.githubUsername
_td @@person.name
end
_td data_ids: @@person.id do
if @@person.selected
if @@auth.ipmc and not @@person.icommit
_button.btn.btn_primary 'Add as an incubator committer',
data_action: 'add icommit',
data_target: '#confirm', data_toggle: 'modal',
data_confirmation: "Add #{@@person.name} as a committer " +
'for the incubator PPMC?'
end
unless @@ppmc.committers.include? @@person.id
_button.btn.btn_primary 'Add as committer',
data_action: 'add committer',
data_target: '#confirm', data_toggle: 'modal',
data_confirmation: "Add #{@@person.name} as a committer " +
"for the #{@@ppmc.display_name} PPMC?"
end
elsif not @@ppmc.committers.include? @@person.id
_span.issue 'not listed as a committer'
elsif not @@person.icommit
_span.issue 'not listed as an incubator committer'
end
end
end
end
# toggle checkbox
def toggleSelect(person)
person.selected = !person.selected
@@ppmc.refresh()
end
end