Renamed duplicate slots because of recent changes.
authorLennard de Rijk <ljvderijk@gmail.com>
Sat, 09 May 2009 01:37:21 +0200
changeset 2302 7b281ac17abd
parent 2301 fd14daa4b45a
child 2303 11cf7f2cc4ff
Renamed duplicate slots because of recent changes.
app/soc/content/js/duplicate-slots-090331.js
app/soc/content/js/duplicate-slots-090505.js
app/soc/templates/soc/base.html
--- a/app/soc/content/js/duplicate-slots-090331.js	Sat May 09 01:36:22 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-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("<strong>No org slots to process</strong>");
-      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("<strong> Done!</strong>");
-            $("#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("<strong class='error'> Error encountered, try again</strong>");
-            });
-          }
-       }
-      });
-      current_offset+=OFFSET_LENGTH;
-      if (current_offset<NUMBER_OF_ORGS) {
-        setTimeout(arguments.callee,1);
-      }
-    },1);
-    // This prevent page reloading after each ajax call
-    return false;
-  }
-
-  // private function to load a JSON and pushing the data to the
-  // private global variables
-  function loadSingleJSONData(data) {
-    if (data) {
-      // pushing org details
-      for (var org_key in data.data.orgs) {
-        orgs_details[org_key] = data.data.orgs[org_key];
-      }
-      // pushing proposals
-      $(data.data.proposals).each(
-        function(intIndex, proposal) {
-          // if this student_key is not yet present
-          if (assigned_proposals[proposal.student_key]==undefined) {
-            // create the object and insert general info
-            assigned_proposals[proposal.student_key] = {};
-            assigned_proposals[proposal.student_key].name = proposal.student_name;
-            assigned_proposals[proposal.student_key].contact = proposal.student_contact;
-            assigned_proposals[proposal.student_key].proposals = new Array();
-          }
-          // anyway, push the accepted proposals
-          assigned_proposals[proposal.student_key].proposals.push(
-            {
-              "org_key" : proposal.org_key,
-              "proposal_key" : proposal.key_name,
-              "proposal_title": proposal.proposal_title
-            }
-          );
-        }
-      );
-    }
-  }
-
-  // private function to generate the JSON to send for caching and calling
-  // the actual function that will print the data
-  function printDuplicatesAndSendJSON() {
-    // JSON skeleton that need to be sent to the server
-    var to_json = {
-      "data": {
-        "orgs" : orgs_details,
-        "students": {}
-      }
-    }
-    // for every student...
-    for (var student_key in assigned_proposals) {
-      var accepted_proposals = assigned_proposals[student_key].proposals.length;
-      // if accepted proposal are less than 2, then ignore and continue the iteration
-      if (accepted_proposals<2) continue;
-      var student = assigned_proposals[student_key];
-      // push this student to the caching JSON
-      to_json.data.students[student_key] = student;
-      var proposals = student.proposals;
-      // call the function that prints the output html
-      this.showDuplicatesHtml(orgs_details,student,student_key,proposals);
-    }
-    if (html_string=="") {
-      $("#div_duplicate_slots").html("<strong>No duplicate slots found</strong>");
-    }
-    // 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='<ul>';
-    }
-    html_string+= '<li>Student: <strong><a href="/student/show/'+student_key+'">'+student.name+'</a></strong> (<a href="mailto:'+student.contact+'">'+student.contact+'</a>)';
-    html_string+='<ul>';
-    $(proposals).each(
-      function (intIndex, proposal) {
-        html_string+='<li>Organization: <a href="/org/show/'+proposal.org_key+'">'+orgs_details[proposal.org_key].name+'</a>, admin: '+orgs_details[proposal.org_key].admin_name+' (<a href="mailto:'+orgs_details[proposal.org_key].admin_email+'">'+orgs_details[proposal.org_key].admin_email+'</a>)</li>';
-        html_string+='<ul><li>Proposal: <a href="/student_proposal/show/'+proposal.proposal_key+'">'+proposal.proposal_title+'</a></li></ul>';
-      }
-    );
-    html_string+='</ul></li>';
-    html_string+='</ul>';
-    $("#div_duplicate_slots").html(html_string);
-  }
-}
--- /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("<strong>No org slots to process</strong>");
+      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("<strong> Done!</strong>");
+            $("#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("<strong class='error'> Error encountered, try again</strong>");
+            });
+          }
+       }
+      });
+      current_offset+=OFFSET_LENGTH;
+      if (current_offset<NUMBER_OF_ORGS) {
+        setTimeout(arguments.callee,1);
+      }
+    },1);
+    // This prevent page reloading after each ajax call
+    return false;
+  }
+
+  // private function to load a JSON and pushing the data to the
+  // private global variables
+  function loadSingleJSONData(data) {
+    if (data) {
+      // pushing org details
+      for (var org_key in data.data.orgs) {
+        orgs_details[org_key] = data.data.orgs[org_key];
+      }
+      // pushing proposals
+      $(data.data.proposals).each(
+        function(intIndex, proposal) {
+          // if this student_key is not yet present
+          if (assigned_proposals[proposal.student_key]==undefined) {
+            // create the object and insert general info
+            assigned_proposals[proposal.student_key] = {};
+            assigned_proposals[proposal.student_key].name = proposal.student_name;
+            assigned_proposals[proposal.student_key].contact = proposal.student_contact;
+            assigned_proposals[proposal.student_key].proposals = new Array();
+          }
+          // anyway, push the accepted proposals
+          assigned_proposals[proposal.student_key].proposals.push(
+            {
+              "org_key" : proposal.org_key,
+              "proposal_key" : proposal.key_name,
+              "proposal_title": proposal.proposal_title
+            }
+          );
+        }
+      );
+    }
+  }
+
+  // private function to generate the JSON to send for caching and calling
+  // the actual function that will print the data
+  function printDuplicatesAndSendJSON() {
+    // JSON skeleton that need to be sent to the server
+    var to_json = {
+      "data": {
+        "orgs" : orgs_details,
+        "students": {}
+      }
+    }
+    // for every student...
+    for (var student_key in assigned_proposals) {
+      var accepted_proposals = assigned_proposals[student_key].proposals.length;
+      // if accepted proposal are less than 2, then ignore and continue the iteration
+      if (accepted_proposals<2) continue;
+      var student = assigned_proposals[student_key];
+      // push this student to the caching JSON
+      to_json.data.students[student_key] = student;
+      var proposals = student.proposals;
+      // call the function that prints the output html
+      this.showDuplicatesHtml(orgs_details,student,student_key,proposals);
+    }
+    if (html_string=="") {
+      $("#div_duplicate_slots").html("<strong>No duplicate slots found</strong>");
+    }
+    // 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='<ul>';
+    }
+    html_string+= '<li>Student: <strong><a href="/student/show/'+student_key+'">'+student.name+'</a></strong> (<a href="mailto:'+student.contact+'">'+student.contact+'</a>)';
+    html_string+='<ul>';
+    $(proposals).each(
+      function (intIndex, proposal) {
+        html_string+='<li>Organization: <a href="/org/show/'+proposal.org_key+'">'+orgs_details[proposal.org_key].name+'</a>, admin: '+orgs_details[proposal.org_key].admin_name+' (<a href="mailto:'+orgs_details[proposal.org_key].admin_email+'">'+orgs_details[proposal.org_key].admin_email+'</a>)</li>';
+        html_string+='<ul><li>Proposal: <a href="/student_proposal/show/'+proposal.proposal_key+'">'+proposal.proposal_title+'</a></li></ul>';
+      }
+    );
+    html_string+='</ul></li>';
+    html_string+='</ul>';
+    $("#div_duplicate_slots").html(html_string);
+  }
+}
--- a/app/soc/templates/soc/base.html	Sat May 09 01:36:22 2009 +0200
+++ b/app/soc/templates/soc/base.html	Sat May 09 01:37:21 2009 +0200
@@ -97,7 +97,7 @@
   <script type="text/javascript" src="/soc/content/js/slot-allocator-090320.js"></script>
   {% endif %}
   {% if uses_duplicates %}
-  <script type="text/javascript" src="/soc/content/js/duplicate-slots-090331.js"></script>
+  <script type="text/javascript" src="/soc/content/js/duplicate-slots-090505.js"></script>
   {% endif %}
  </head>
 {% endblock %}