blob: 5121195ab9c882fba8252a7786641a6e3861cf9a [file] [log] [blame]
class DraftMinutes < Vue
def initialize
@disabled = true
end
# default attributes for the button associated with this form
def self.button
{
text: 'draft minutes',
class: 'btn_danger',
data_toggle: 'modal',
data_target: '#draft-minute-form'
}
end
def render
_ModalDialog.draft_minute_form!.wide_form color: 'commented' do
_h4.commented 'Commit Draft Minutes to SVN'
_textarea.draft_minute_text!.form_control rows: 17, tabIndex: 1,
placeholder: 'minutes', value: @draft, disabled: @disabled
# variable number of buttons
_button.btn_default 'Cancel', type: 'button', data_dismiss: 'modal'
_button.btn_primary 'Save', type: 'button', onClick: self.save,
disabled: @disabled
end
end
# autofocus on minute text; fetch draft
def mounted()
@draft = ''
jQuery('#draft-minute-form').on 'shown.bs.modal' do
retrieve "draft/#{Agenda.title.gsub('-', '_')}", :text do |draft|
document.getElementById("draft-minute-text").focus()
@disabled = false
@draft = draft
jQuery('#draft-minute-text').animate(scrollTop: 0)
end
end
end
def save(event)
data = {
agenda: Agenda.file,
message: "Draft minutes for #{Agenda.title}",
text: @draft
}
@disabled = true
post 'draft', data do
@disabled = false
jQuery('#draft-minute-form').modal(:hide)
document.body.classList.remove('modal-open')
end
end
end