From 4d5da1c87111b3e6e1954c51637ee07eafa261b4 Mon Sep 17 00:00:00 2001 From: Ben Rothman Date: Sun, 12 Apr 2015 13:44:57 -0500 Subject: [PATCH] tab advance on the submission page --- js/pointsCenter.js | 185 +++------------------------------------------ 1 file changed, 12 insertions(+), 173 deletions(-) diff --git a/js/pointsCenter.js b/js/pointsCenter.js index 007a786..9658ec2 100644 --- a/js/pointsCenter.js +++ b/js/pointsCenter.js @@ -4,6 +4,7 @@ define(['jquery', 'moment', 'hogan'], function($, moment, Hogan) { type = 'Other', root = '/points', valid_event_name = false, + tab_pressed = false, // for convenient, fast tab-completion on submission page slivkanNameExists = function(name) { if(name.length === 0){ return null; @@ -38,6 +39,10 @@ define(['jquery', 'moment', 'hogan'], function($, moment, Hogan) { //needs a delay because typeahead.js seems to not like destroying on focusout setTimeout(function(target) { event.data.callback(target.typeahead('destroy').closest('.form-group')); + + if(tab_pressed){ + target.closest('.form-group').next().find('input').focus(); + } }, 1, target); } }; @@ -477,12 +482,17 @@ define(['jquery', 'moment', 'hogan'], function($, moment, Hogan) { submission = { init: function() { - //prevent [Enter] from causing form submit $(window).on('keydown', function(event) { - if(event.keyCode == 13) { + if(event.keyCode == 9){ + tab_pressed = true; + }else if(event.keyCode == 13){ //prevent [Enter] from causing form submit event.preventDefault(); return false; } + }).on('keyup', function(event) { + if(event.keyCode == 9){ + tab_pressed = false; + } }); $.getJSON(root + '/ajax/getSlivkans.php', function(data) { @@ -1368,177 +1378,6 @@ define(['jquery', 'moment', 'hogan'], function($, moment, Hogan) { } }, - updateSlivkans = { - init: function() { - $.getJSON(root + '/ajax/getSlivkans.php', function(data) { - slivkans = data.slivkans; - nicknames = data.nicknames; - - //tack on nicknames to slivkans - for(var i=0; i 0){ - $.getJSON(root + '/ajax/getCommitteeOrSuite.php', {committee: event.target.value}, updateSlivkans.addSlivkans); - } - }); - - $('#suite').on('change', function(event){ - $('#committee').val(''); - $('.committee-points').hide(); - - if(event.target.value.length > 0){ - $.getJSON(root + '/ajax/getCommitteeOrSuite.php', {suite: event.target.value}, updateSlivkans.addSlivkans); - } - }); - - $('#submit').on('click', function(){ - var name, pts, - entries = $('#slivkan-entry-tab').find('.slivkan-entry'), - committeePoints = $('.committee-points'), - committee = $('#committee').val(), - suite = $('#suite').val(), - nuEmailArray = [], - committeePointsArray = []; - - for(var i=0; i 0){ - nuEmailArray.push(slivkans[slivkans.indexOfKey('full_name', name)].nu_email); - } - - if(committee.length > 0){ - pts = committeePoints.eq(i).val(); - committeePointsArray.push(pts); - } - } - - if(committee.length > 0){ - $.post( - root + '/ajax/submitCommitteeOrSuite.php', - { - committee: committee, - slivkans: nuEmailArray, - points: committeePointsArray - }, - function(data){ - window.alert(data); - } - ); - }else if(suite.length > 0){ - $.post( - root + '/ajax/submitCommitteeOrSuite.php', - { - suite: suite, - slivkans: nuEmailArray - }, - function(data){ - window.alert(data); - } - ); - } - }); - }, - slivkanTypeahead: function() { - var target = $(this); - - if(target.closest('.slivkan-entry-control').addClass('has-warning').is(':last-child')){ - var num_inputs = $('#slivkan-entry-tab').find('.slivkan-entry').length; - if(num_inputs < 20){ - submission.appendSlivkanInputs(1); - } - } - if(!target.hasClass('tt-query')){ - target.typeahead(typeaheadOpts('slivkans', slivkans)).focus(); - } - }, - validateSlivkanName: function(entry) { - var valid = true, - slivkan_entry = entry.find('.slivkan-entry'), - name = slivkan_entry.val(), - nickname_ind = nicknames.indexOfKey('nickname', name); - - if(nickname_ind != -1){ - name = slivkans[slivkans.indexOfKey('nu_email', nicknames[nickname_ind].nu_email)].full_name; - slivkan_entry.val(name); - } - - var nameArray = []; - - //clear duplicates - $('#slivkan-entry-tab').find('.slivkan-entry').each(function() { - var self = $(this); - if(self.val().length > 0){ - if(nameArray.indexOf(self.val()) == -1){ - nameArray.push(self.val()); - }else{ - self.val(''); - $('#duplicate-alert').show(); - submission.validateSlivkanName(self.parent(), true); - } - } - }); - - //no names = invalid - if(nameArray.length === 0){ valid = false; } - - //update name in case it changed - name = slivkan_entry.val(); - - entry.removeClass('has-warning'); - - if(name.length > 0){ - if(slivkans.indexOfKey('full_name', name) == -1){ valid=false; } - updateValidity(entry, valid); - }else{ - entry.removeClass('has-success has-error'); - } - - return valid; - }, - addSlivkans: function(data) { - var entries = $('#slivkan-entry-tab').find('.slivkan-entry-control'), - len = data.length; - - entries.find('.slivkan-entry').val(''); - - if(entries.length <= len){ - submission.appendSlivkanInputs(len - entries.length + 1); - entries = $('#slivkan-entry-tab').find('.slivkan-entry-control'); - } - - for(var i=0; i