diff -r fd14daa4b45a -r 7b281ac17abd app/soc/content/js/duplicate-slots-090505.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/duplicate-slots-090505.js Sat May 09 01:37:21 2009 +0200
@@ -0,0 +1,191 @@
+var duplicateSlots = new function() {
+ // this variable will contain all the org details, and filled
+ // incrementally
+ var orgs_details = {};
+ // this variable will contain all student/proposal data details,
+ // filled incrementally
+ var assigned_proposals = new Array();
+
+ // public function to begin iterating load of JSONs and then call printing
+ // of duplicates
+
+ this.showDuplicatesInit = function() {
+
+ html_string = '';
+ // Remember this object for Javascript scoping
+ var this_object = this;
+ var NUMBER_OF_ORGS = number_of_orgs;
+ var OFFSET_LENGTH = offset_length;
+ // Variables to handle progress bar updating
+ var ITERATIONS = (number_of_orgs % offset_length)==0 ? Math.floor(number_of_orgs/offset_length) : Math.floor(number_of_orgs/offset_length)+1;
+
+ if (ITERATIONS==0) {
+ $("#div_duplicate_slots").html("No org slots to process");
+ return;
+ }
+
+ var successful_calls = 0;
+
+ $("#id_button_duplicate_slots").fadeOut("slow",
+ function() {
+ $("#duplicates_progress_bar").progressBar(0);
+ $("#description_done").html("");
+ // For every ajax success, bind this function to update user feedback
+ $(this).bind("ajaxSuccess", function() {
+ successful_calls++;
+ var percentage = Math.floor(100 * (successful_calls) / (ITERATIONS));
+ $("#duplicates_progress_bar").progressBar(percentage);
+ $("#description_progressbar").html(" Processed orgs chunk " + (successful_calls) + "/" + ITERATIONS);
+ // If this is the last call, feedback the user and print the duplicates data
+ if (successful_calls==ITERATIONS) {
+ $("#applications_progress_bar").fadeOut("slow",
+ function() {
+ $("#duplicates_progress_bar").progressBar(0);
+ $("#id_button_duplicate_slots").fadeIn("slow");
+ }
+ );
+ $("#description_progressbar").html("");
+ $("#description_done").html(" Done!");
+ $("#duplicates_progress_bar").fadeOut("slow",
+ function() {
+ $("#id_button_duplicate_slots").val("Recalculate").fadeIn("slow",
+ function() {
+ // Call printing to HTML function with correct scope
+ printDuplicatesAndSendJSON.call(this_object);
+ }
+ );
+ }
+ );
+ }
+ });
+ // Call the showDuplicates function for the first time with correct scope
+ $("#duplicates_progress_bar").fadeIn("slow", showDuplicates.apply(this_object,[url_to_query,OFFSET_LENGTH,NUMBER_OF_ORGS]));
+ }
+ );
+ }
+
+ function showDuplicates(url_to_query,OFFSET_LENGTH,NUMBER_OF_ORGS) {
+ var current_offset = 0;
+ orgs_details = {};
+ assigned_proposals = new Array();
+
+ // Here Ajax call is handled
+ setTimeout(function() {
+ $.ajax({
+ cache:false,
+ mode: "sync",
+ type: "GET",
+ timeout: 1000000,
+ dataType: "json",
+ url: "/program/assigned_proposals/"+url_to_query+"?limit="+OFFSET_LENGTH+"&offset="+current_offset,
+ success: function (data, textStatus) {
+ if (data) {
+ // Load JSON data
+ loadSingleJSONData(data);
+ }
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ // if there is an error return the button and leave a try again message
+ if (XMLHttpRequest!=undefined) {
+ $("#id_button_duplicate_slots").fadeIn("slow", function() {
+ $("#description_done").html(" Error encountered, try again");
+ });
+ }
+ }
+ });
+ current_offset+=OFFSET_LENGTH;
+ if (current_offsetNo duplicate slots found");
+ }
+ // at the end, send the JSON for caching purposes
+ $.ajax({
+ url: location.href,
+ type: 'POST',
+ processData: true,
+ data: {result: JSON.stringify(to_json)},
+ contentType: 'application/json',
+ dataType: 'json',
+ });
+ }
+
+ // public function to output actual HTML out of the data (cached or not)
+ this.showDuplicatesHtml = function(orgs_details,student,student_key,proposals) {
+ if (html_string == '') {
+ $("#div_duplicate_slots").html('');
+ html_string='';
+ $("#div_duplicate_slots").html(html_string);
+ }
+}