render

in www/project/icla/views/pages/vote.js.rb [45:210]


  def render
    _p %{
      This form allows PMC and PPMC members to
      vote to invite a contributor to become a committer or a PMC/PPMC member.
    }
    if @phase == 'vote'
      _b 'Project: ' + @pmc
      _p
      _b 'Contributor: ' + @iclaname + ' (' + @iclaemail + ')'
      _p
      _b 'Proposed by: ' + @proposer
      _p
      _p 'Subject: ' + @subject
      _p
      _div.form_group.vote do
        _label do
          _input type: 'radio', name: 'vote', value: '+1',
          onClick: lambda {@vote = '+1'; @showComment = false; checkValidity()}
          _span ' +1 approve '
        end
        _p
        _label do
          _input type: 'radio', name: 'vote', value: '+0',
          onClick: lambda {@vote = '+0'; @showComment = false; checkValidity()}
          _span " +0 don't care "
        end
        _p
        _label do
          _input type: 'radio', name: 'vote', value: '-0',
          onClick: lambda {@vote = '-0'; @showComment = false; checkValidity()}
          _span " -0 don't care "
        end
        _p
        _label do
          _input type: 'radio', name: 'vote', value: '-1',
          onClick: lambda {@vote = '-1'; @showComment = true; checkValidity()}
          _span ' -1 disapprove, because... '
        end
        _p
      end

      
      
      
      if @showComment
        _div.form_group do
          _textarea.form_control rows: 4,
          placeholder: 'reason to disapprove',
          id: 'commentBody', value: @commentBody,
          onChange: self.setCommentBody
        end
      end

      _h5 'Voting history'

      tally = {} 
      
      @votes.each {|v|
        tally[v.member] = [v.vote, v.timestamp]
        _p v.vote + ' From: ' + v.member + ' Date: ' + v.timestamp
      }

      _h5 'Summary of voting so far'

      vote_count = {}
      tally.each_key { |k|
        vote_count[tally[k][0]] ||= 0
        vote_count[tally[k][0]] += 1
        _ k + ' ' + tally[k][0] + ' ' + tally[k][1]
        _br
      }

      _br

      vote_count.each_key {|k|
        _ k + ': ' + vote_count[k]
        _br
      }

      started = new Date(@votes[0]['timestamp'])
      now = new Date()
      elapsed = (now - started) / (1000 * 60 * 60)
      _ 'Voting started: ' + started.toISOString() + ' Hours elapsed: ' + elapsed.to_i

      _p

      _h5 'Previous discussion'

      
      @comments.each {|c|
        _b 'From: ' + c.member + ' Date: ' + c.timestamp
        _p c.comment
      }

      
      
      
      _p do
        _button.btn.btn_primary 'Submit my vote', disabled: @disabled,
        onClick: self.submitVote
        _b ' or '
        _button.btn.btn_primary 'Cancel the vote', disabled: false,
        onClick: self.cancelVote
        _b ' or '
        _button.btn.btn_primary 'Tally the vote', disabled: false,
        onClick: self.tallyVote
      end
    end

    if @debug
      _p 'token: ' + @token
      _p 'comment: ' + @commentBody
      _p 'vote: ' + @vote
    end
    
    if @alert
      _div.alert.alert_danger do
        _b 'Error: '
        _span @alert
      end
    end


    
    
    
    _div.modal.fade.invitation_preview! do
      _div.modal_dialog do
        _div.modal_content do
          _div.modal_header do
            _button.close "\u00d7", type: 'button', data_dismiss: 'modal'
            _h4 'Preview Invitation Email'
          end

          _div.modal_body do
            
            _div do
              _b 'From: '
              _span @memberEmail
            end
            _div do
              _b 'To: '
              _span "#{@iclaname} <#{@iclaemail}>"
            end
            _div do
              _b 'cc: '
              _span @pmcEmail
            end

            
            _div.form_group do
              _label :for => 'invitation'
              _textarea.form_control.invitation! value: @invitation, rows: 12,
                onChange: self.setInvitation 
            end
          end

          _div.modal_footer do
            _button.btn.btn_default 'Cancel', data_dismiss: 'modal'
            _button.btn.btn_primary 'Mock Send', onClick: self.mockSend
          end
        end
      end
    end
  end