blob: 5cd5a26b1488708b48eb45df9f86d35189432fd7 [file] [log] [blame]
#
# A page showing all queued approvals and comments, as well as items
# that are ready for review.
#
class Shepherd < Vue
def initialize
@disabled = false
@followup = []
end
def render
shepherd = @@item.shepherd.downcase()
actions = Agenda.find('Action-Items')
if actions.actions.any? {|action| action.owner == @@item.shepherd}
_h2 'Action Items'
_ActionItems item: actions, filter: {owner: @@item.shepherd}
end
_h2 'Committee Reports'
# list agenda items associated with this shepherd
Agenda.index.each do |item|
if item.shepherd and item.shepherd.downcase().start_with? shepherd
_Link text: item.title, href: "shepherd/queue/#{item.href}",
class: "h3 #{item.color}"
_AdditionalInfo item: item, prefix: true
# flag action
if item.missing or not item.comments.empty?
if item.attach =~ /^[A-Z]+$/
mine = (shepherd == Server.firstname ? 'btn-primary' : 'btn-link')
_div.shepherd do
_button.btn (item.flagged ? 'unflag' : 'flag'), class: mine,
data_attach: item.attach,
onClick: self.click, disabled: @disabled
_Email item: item
end
end
end
end
end
# list feedback items that may need to be followed up
followup = []
for title in @followup
next unless @followup[title].count == 1
next unless @followup[title].shepherd == @@item.shepherd
next if Agenda.index.any? {|item| item.title == title}
@followup[title].title = title
followup << @followup[title]
end
unless followup.empty?
_h2 'Feedback that may require followup'
followup.each do |followup|
link = followup.title.gsub(/[^a-zA-Z0-9]+/, '-')
_a.h3.ready followup.title, href: "../#{@prior_date}/#{link}"
splitComments(followup.comments).each do |comment|
_pre.comment comment
end
end
end
end
# Fetch followup items
def mounted()
# if cached, reuse
if Shepherd.followup
@followup = Shepherd.followup
return
end
# determine date of previous meeting
prior_agenda = Server.agendas[-2]
return unless prior_agenda
@prior_date = prior_agenda[/\d+_\d+_\d+/].gsub('_', '-')
retrieve "../#{@prior_date}/followup.json", :json do |followup|
Shepherd.followup = followup
@followup = followup
end
end
def click(event)
data = {
agenda: Agenda.file,
initials: Server.initials,
attach: event.target.getAttribute('data-attach'),
request: event.target.textContent
}
@disabled = true
post 'approve', data do |pending|
@disabled = false
Pending.load pending
end
end
end