app/soc/content/js/slot-allocator.js
author Lennard de Rijk <ljvderijk@gmail.com>
Sun, 08 Mar 2009 13:14:28 +0000
changeset 1741 0da1285f5bc0
parent 1734 c9ecc7449632
child 1744 0288cb88edd2
permissions -rw-r--r--
Public reviews are now shown on the public page for the student proposal. The assigned mentor name has been removed from the public page. The student proposal view now uses the new getReviewsForEntity method. Patch by: Lennard de Rijk Reviewed by:to-be-reviewed

var current_allocated_slots = 0;
var current_slots = {};
var tooltip = [
  "<div class='tooltip'>",
  "<div class='tooltip-body'>",
  "<img src='/soc/content/images/purrInfo.png' alt='' />",
  "<h3>Slots</h3>",
  "<p id='p_assigned_slots'></p>",
  "<p id='p_remaining_slots'></p>",
  "<p id='p_total_slots'></p></div>",
  "<div class='tooltip-bottom'></div>",
  "</div>",
  ].join('');

$.postJSON = function (post_url, to_json, callback) {
    $.ajax({
        url: post_url,
        type: 'POST',
        processData: true,
        data: {result: JSON.stringify(to_json)},
        contentType: 'application/json',
        success: callback,
    });
};

function updateFromJSON(data) {
  if (data) {
    $(data.data).each(
      function (intIndex,item) {
        $("#id_spin_slot_count_"+item.link_id).val(item.slots);
        current_slots[item.link_id] = {slots: item.slots, locked: item.locked, adjustment: item.adjustment};
        $("#id_locked_slot_"+item.link_id).attr("checked",item.locked);
        $("#id_spin_adjustment_count_"+item.link_id).val(item.adjustment);
      }
    );
    updateOverlay();
  }
}

function retrieveJSON() {
  $.getJSON("http://localhost:8080/program/slots/google/gsoc2009?_="+(new Date().getTime()),
    updateFromJSON
  );
}

function reCalculate() {
  url = "http://localhost:8080/program/slots/google/gsoc2009?_="+(new Date().getTime())
   $.postJSON(url, current_slots, updateFromJSON);
}

function updateOverlay() {
  updateCurrentSlots();
  var remaining_slots = MAX_AVAILABLE_SLOTS - current_allocated_slots;
  $("#p_assigned_slots").html("<strong>Assigned slots:</strong> "+current_allocated_slots);
  $("#p_remaining_slots").html("<strong>Remaining slots:</strong> "+remaining_slots);
}

function updateCurrentSlots() {
  current_allocated_slots = 0;
  for (var org_id in current_slots) {
    current_allocated_slots = current_allocated_slots+new Number(current_slots[org_id].slots);
  }
}

function lockSlots (checkbox) {
  var locked = $(checkbox).attr("checked");
  var re = /^id_locked_slot_(\w*)/;
  var org_link_id = checkbox.id.match(re)[1];
  current_slots[org_link_id].locked = locked;
}

function assignSlots (counter) {
  var re = /^id_spin_slot_count_(\w*)/;
  var org_link_id = counter.id.match(re)[1];
  current_slots[org_link_id].slots = $(counter).val();
  updateCurrentSlots();
  updateOverlay();
}

function assignAdjustment (counter) {
  var re = /^id_spin_adjustment_count_(\w*)/;
  var org_link_id = counter.id.match(re)[1];
  current_slots[org_link_id].adjustment = $(counter).val();
}