IT61/it61-rails

View on GitHub
app/assets/javascripts/registrations/visits.js

Summary

Maintainability
A
0 mins
Test Coverage
$(document).ready(function () {
  'use strict';

  var $chekboxes = $('.icheckbox');

  var options = {
    item: '<li></li>',
    valueNames: [
      {name: 'id', attr: 'data-id'},
      'name'
    ],
    searchColumns: ['name']
  };

  var registeredList = new List('registered', options);
  var visitedList = new List('visited', options);
  var $registeredCounter = $('#registered_counter');
  var $visitedCounter = $('#visited_counter');

  $chekboxes.iCheck({
    checkboxClass: 'icheckbox_square-blue',
    radioClass: 'iradio_square-blue',
    increaseArea: '20%' // optional
  });

  var moveItemToList = function(item, fromList, toList) {
    // Show all items
    $('.search').val('');
    toList.search();
    fromList.search();

    // Move item to destination list
    $(toList.list).prepend(item);

    // Rebuild search index from HTML
    toList.reIndex();
    fromList.reIndex();
  };

  var markVisit = function(checkbox) {
    var $participant = $(checkbox).closest('.participant');
    var userID = $participant.data('id');
    $.ajax({
      url: window.location + '/mark',
      type: 'PUT',
      data: {
        user_id: userID,
        visited: checkbox.checked
      },
      success: function() {
        if (!checkbox.checked) {
          moveItemToList($participant.parent(), visitedList, registeredList);
        } else {
          moveItemToList($participant.parent(), registeredList, visitedList);
        }
        $registeredCounter.text(registeredList.size());
        $visitedCounter.text(visitedList.size());
      }
    });
  };

  $chekboxes.on('ifChanged', function() {
    markVisit(this);
  });

});