blob: afba5a0ce89c5d21cd72d84ad36b557cee9f4323 [file] [log] [blame]
#
# Searchable Project roster
#
class ProjectSearch < Vue
def render
matches = []
found = false
search = @@search.downcase().strip().split(/\s+/)
for id in @@project.roster do
person = @@project.roster[id]
match = search.all? {|term|
id.include? term or person.name.downcase().include? term or
person.role.downcase().include? term
}
next unless match or person.selected
found = true if match
person.id = id
matches << person
end
matches = matches.sort_by {|person| person.name}
_table.table.table_hover do
_thead do
_tr do
_th if @@auth
_th 'id'
_th 'public name'
_th 'role'
end
end
_tbody do
matches.each do |person|
_tr key: "pmc_#{person.id}" do
if @@auth
_td do
_input type: 'checkbox', checked: person.selected || false,
onChange: -> {self.toggleSelect(person)}
end
end
if person.member
_td { _b { _a person.id, href: "committer/#{person.id}" } }
_td { _b person.name }
else
_td { _a person.id, href: "committer/#{person.id}" }
_td person.name
end
_td person.role
end
end
end
end
_div.alert.alert_warning 'No matches' unless found
end
def toggleSelect(person)
person.selected = !person.selected
@@project.refresh()
end
end