blob: 6607d3e5f987ebb1eb3a15d19324709d10d37a37 [file] [log] [blame]
class Vote < Vue
def initialize
@disabled = false
end
# default attributes for the button associated with this form
def self.button
{
text: 'vote',
class: 'btn_primary',
data_toggle: 'modal',
data_target: '#vote-form'
}
end
def render
_ModalDialog.vote_form!.wide_form color: 'commented' do
_h4.commented 'Vote'
_p do
_span "#{@votetype} vote on the matter of "
_em @@item.fulltitle.sub(/^Resolution to/, '')
end
_pre @directors
_textarea.vote_text! rows: 4, placeholder: 'minutes', value: @draft
_button.btn_default 'Cancel', type: 'button', data_dismiss: 'modal',
onClick:-> {@draft = @base}
if @base
_button.btn_warning 'Delete', type: 'button', onClick: self.save
end
_button.btn_primary 'Save', type: 'button', onClick: self.save,
disabled: (@draft == @base)
_button.btn_warning 'Tabled', type: 'button',
onClick: self.save, disabled: (@draft != '')
_button.btn_success 'Unanimous', type: 'button',
onClick: self.save, disabled: (@draft != '')
end
end
# when initially displayed, set various fields to match the item
def created()
self.setup(@@item)
end
def mounted()
# update form to match current item
jQuery('#vote-form').on 'show.bs.modal' do
self.setup(@@item)
end
# autofocus on comment text
jQuery('#vote-form').on 'shown.bs.modal' do
document.getElementById('vote-text').focus()
end
end
# reset base, draft minutes, directors present, and vote type
def setup(item)
@directors = Minutes.directors_present
# alternate forward/reverse roll calls based on month and attachment
month = Date.new(Date.parse(Agenda.date)).getMonth()
attach = item.attach.charCodeAt(1)
if (month + attach) % 2 == 0
@votetype = 'Roll call'
else
@votetype = 'Reverse roll call'
@directors = @directors.split("\n").reverse().join("\n")
end
@base = @draft = Minutes.get(item.title) || ''
end
# post vote results
def save(event)
case event.target.textContent
when 'Save'
text = @draft
when 'Delete'
text = ''
when 'Tabled'
text = 'tabled'
when 'Unanimous'
text = 'unanimous'
end
data = {
agenda: Agenda.file,
title: @@item.title,
text: text
}
@disabled = true
post 'minute', data do |minutes|
Minutes.load minutes
self.setup(@@item)
@disabled = false
jQuery('#vote-form').modal(:hide)
document.body.classList.remove('modal-open')
end
end
end