diff -r cd9eed2b787e -r 0ee67cc9bd20 app/soc/content/js/slot-allocator-090825.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/soc/content/js/slot-allocator-090825.js Tue Aug 25 16:15:07 2009 +0100 @@ -0,0 +1,110 @@ +var current_allocated_slots = 0; +var current_slots = {}; +var tooltip = [ + "
", + "
", + "", + "

Slots

", + "

", + "

", + "

", + "
", + "
" +].join(''); + +jQuery.postJSON = function (post_url, to_json, callback) { + jQuery.ajax({ + url: post_url, + type: 'POST', + processData: true, + data: {result: JSON.stringify(to_json)}, + contentType: 'application/json', + dataType: 'json', + success: callback + }); +}; + +function updateCurrentSlots() { + current_allocated_slots = 0; + jQuery.each(current_slots, function (org_id, org_details) { + current_allocated_slots = + current_allocated_slots + Number(org_details.slots); + }); +} + +function updateOverlay() { + updateCurrentSlots(); + var remaining_slots = window.MAX_AVAILABLE_SLOTS - current_allocated_slots; + jQuery("#p_assigned_slots") + .html("Assigned slots: " + current_allocated_slots); + jQuery("#p_remaining_slots") + .html("Remaining slots: " + remaining_slots); +} + +function updateFromJSON(data) { + if (data) { + jQuery(data.data).each( + function (intIndex, item) { + jQuery("#id_spin_slot_count_" + item.link_id).val(item.slots); + current_slots[item.link_id] = { + slots: item.slots, + locked: item.locked, + adjustment: item.adjustment + }; + jQuery("#id_locked_slot_" + item.link_id) + .attr("checked", item.locked); + jQuery("#id_spin_adjustment_count_" + item.link_id) + .val(item.adjustment); + } + ); + updateOverlay(); + } +} + +function retrieveJSON() { + jQuery.getJSON( + window.RETURN_URL + "?_=" + (new Date().getTime()), + function (data) { + if (data) { + updateFromJSON(data); + } + } + ); +} + +function reCalculate() { + var url = window.RETURN_URL + "?_=" + (new Date().getTime()); +  jQuery.postJSON(url, current_slots, updateFromJSON); +} + +function submit() { + var url = window.RETURN_URL + "?submit=1&_=" + (new Date().getTime()); +  jQuery.postJSON(url, current_slots, updateFromJSON); +} + +function load() { + var url = window.RETURN_URL + "?load=1&_=" + (new Date().getTime()); +  jQuery.postJSON(url, current_slots, updateFromJSON); +} + +function lockSlots(checkbox) { + var locked = jQuery(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 = jQuery(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 = jQuery(counter).val(); +} +