ncbo/bioportal_web_ui

View on GitHub
app/views/users/edit.html.haml

Summary

Maintainability
Test Coverage
:javascript
  jQuery(document).ready(function() {
    jQuery('#user_info').on('submit', function (event) {
        event.preventDefault()
        let admin_checkbox = jQuery('input[id=user_admin]')
        if(admin_checkbox.attr('checked') && !admin_checkbox.hasClass('admin')){
          alertify.confirm('Are you sure you want to make this user an admin?', (e) => {
            if(e){
              this.submit()
            }else {
              jQuery('input[type="submit"]').prop('disabled',false)
            }
          })
        } else if (!admin_checkbox.attr('checked') && admin_checkbox.hasClass('admin')){
          alertify.confirm('Are you sure you want to revoke admin privileges for this user?',  (e) => {
            if(e){
              this.submit()
            }else {
              jQuery('input[type="submit"]').prop('disabled',false)
            }
          })
        }else {
          this.submit()
        }
      })
  });

%div.container
  %div.edit-user-info
    = form_with scope: :user, url: user_path(@user.username), method: 'put', id: 'user_info', class: 'my-4' do |f|
      - if @errors.present?
        .enable-lists
          Errors updating account:
          %ul
            - for error in @errors
              %li= error

      %h2.mb-4 Edit account
      %div.mb-3
        = f.label :firstName, 'First name', class: 'form-label'
        = f.text_field :firstName, class: 'form-control', required: 'true'
      %div.mb-3
        = f.label :lastName, 'Last name', class: 'form-label'
        = f.text_field :lastName, class: 'form-control'
      %div.mb-3
        = f.label :username, class: 'form-label'
        = f.text_field :username, class: 'form-control', disabled: 'true'
      %div.mb-3
        = f.label :email, 'Email address', class: 'form-label'
        = f.email_field :email, class: 'form-control', required: 'true'
      %div.mb-3
        = f.label :githubId, 'GitHub username', class: 'form-label'
        = f.text_field :githubId, class: 'form-control', 'aria-describedby': 'githubUsernameHelp',
                                  pattern: '[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}',
                                  title: 'Characters: only alphanumeric and single hyphens. Length: 1-39'
        %div.form-text{id: 'githubUsernameHelp'}
          User handle on GitHub, for example: 'octocat'
      %div.mb-3
        = f.label :orcidId, 'ORCID iD', class: 'form-label'
        = f.text_field :orcidId, class: 'form-control', 'aria-describedby': 'orcidHelp',
                                 pattern: '\d{4}-\d{4}-\d{4}-\d{4}', title: 'Format: XXXX-XXXX-XXXX-XXXX'
        %div.form-text{id: 'orcidHelp'}
          16-digit ORCID, for example: 0000-1234-5678-9101
      - if session[:user].admin?
        %div.form-check.mb-3
          = f.check_box :admin?, class: (@user.admin? ? 'admin form-check-input' : 'form-check-input')
          = f.label :admin, 'Grant admin privileges', class: 'form-check-label'
      %div.mb-5
        = submit_tag('Update', class: 'btn btn-primary me-1')
        = link_to 'Cancel', user_path(@user.username), class: 'btn btn-primary'