www/secretary/workbench/views/forms/withdrawal-request.js.rb (79 lines of code) (raw):

class WithdrawalRequest < Vue def initialize # TODO: update @filed = true on submit and related reset @filed = false @filename = '' @disabled = false @search = '' @members = [] @availid = '' end def mounted jQuery('input[name=selected]').val(decodeURIComponent(@@selected)) jQuery('input[name=message]').val(window.parent.location.pathname) if not @members.empty? @disabled = false else @disabled = true fetch('../../members.json', {method: 'get', credentials: 'include', headers: {accept: 'application/json'}}) .then do |response| response.json().then do |json| @members = json @disabled = true end end end name = @@headers.name || '' # reorder name if there is a single comma present parts = name.split(',') if parts.length == 2 and parts[1] !~ /^\s*(jr|ph\.d)\.?$/i name = "#{parts[1].strip()} #{parts[0]}" end @search = name end def render _h4 'Member Withdrawal Request' _form.form do _h5 'Search' _table.form do _tr do _input value: @search end end end if @search.length >= 3 and not @members.empty? search = @search.downcase().split(' ') _ul.icla_search do @members.each do |member| availid = member.id name = member.name names = name.downcase().split(' ') # N.B. split parameter is required by JavaScript if search.any? { |part| names.include? part or availid == part} _li do _input type: :radio, name: 'search', id: availid, onClick: lambda { @availid = availid @filename = availid @disabled = false } _label name + " (#{availid})", for: availid end end end end end _form method: 'post', action: '../../tasklist/withdrawal-request', target: 'content' do _input type: :hidden, name: 'message' _input type: :hidden, name: 'selected' _input type: :hidden, name: 'signature', value: @@signature _input type: :hidden, name: 'availid', value: @availid _table.form do _tr do _th 'ASF id (used for file name)' _td do _input type: :text, name: 'filename', value: @filename, required: true, disabled: @filed || @availid.empty?, pattern: '[a-zA-Z][\-\w]+(\.[a-z]+)?' # bare '-' not allowed in v-mode character classes end end end _input.btn.btn_primary value: 'File', type: :submit, disabled: @disabled end end end