blob: 3c61b9766d64ea0e7a3bd280063d60d13b663e25 [file] [log] [blame]
#
# Send reminders for action items
#
class ActionReminder < Vue
def initialize
@disabled = false
@list = @@item.actions.map do |action|
Object.assign({complete: action.status != ""}, action)
end
end
# default attributes for the button associated with this form
def self.button
{
text: 'send reminders',
class: 'btn_primary',
data_toggle: 'modal',
data_target: '#reminder-form'
}
end
# commit form: allow the user to select which reminders to send
def render
_ModalDialog.reminder_form!.wide_form color: 'blank' do
# header
_h4 'Send reminders'
_pre.report do
@list.each do |action|
_CandidateAction action: action
end
end
# buttons
_button.btn_default 'Close', data_dismiss: 'modal'
_button.btn_info 'Dry Run', onClick: self.click, disabled: @disabled
_button.btn_primary 'Submit', onClick: self.click, disabled: @disabled
end
end
def click(event)
dryrun = (event.target.textContent == 'Dry Run')
data = {
dryrun: dryrun,
agenda: Agenda.file,
actions: @list.select {|item| !item.complete}
}
@disabled = true
post 'remind-actions', data do |response|
if not response
alert("Server error - check console log")
elsif dryrun
console.log Object.values(response.sent).join("\n---\n\n")
response.delete(:sent)
console.log response
alert("Dry run - check console log")
elsif response.count == @list.length
alert("Reminders have been sent to: #{response.sent.keys.join(', ')}.")
elsif response.count and response.unsent
alert("Error: no emails were sent to #{response.unsent.join(', ')}")
else
alert("No reminders were sent")
end
@disabled = false
Agenda.load response.agenda, response.digest
jQuery('#reminder-form').modal(:hide)
document.body.classList.remove('modal-open')
end
end
end