app/soc/content/js/org-accept.js
author Lennard de Rijk <ljvderijk@gmail.com>
Thu, 26 Feb 2009 09:02:51 +0000
changeset 1506 b908d671624e
parent 1367 9899e92121b7
permissions -rw-r--r--
Solved the JSON caching problem for bulk acceptance. This is done in the same way as it is done in AJAX calls by appending the current time as a GET argument. Patch by: Mario Ferraro, Lennard de Rijk Reviewed by: Lennard de Rijk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
$(document).ready(function() {
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
	$("#applications_progress_bar").progressBar({showText: false});
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
});
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
     5
function acceptOrgInit(bulk_accept_link) {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
     6
	// get the JSON object with details of every application for bulk acceptance
1506
b908d671624e Solved the JSON caching problem for bulk acceptance.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1367
diff changeset
     7
	$.getJSON(bulk_accept_link+"?_="+(new Date().getTime()),
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
		function(data){
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
     9
			// If there are applications to accept...
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    10
			if (data.nr_applications != 0) {
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    11
				//...then fade out the button, show the progress bar and call the function for acceptance
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    12
				$("#button_accept").fadeOut("slow",
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    13
					function() {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    14
						$("#applications_progress_bar").progressBar(0);
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    15
						$("#button_accept").val("Bulk accept");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    16
						$("#description_done").html("");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    17
						$("#applications_progress_bar").fadeIn("slow", acceptOrgs(data));
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    18
					}
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    19
				);
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    20
			}else {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    21
				$("#description_done").html("<strong>No organizations to accept</strong>");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    22
			}
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
		}
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
	);
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
}
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    27
function acceptOrgs(data) {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    28
	// some global constants
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    29
	var GLOBAL_LINK = data.link;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    30
	var TOTAL_APPLICATIONS = data.nr_applications;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    31
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    32
	// some global variables set needed for internal iteration
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    33
	var application_index = 0;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    34
	// number of iteration is not taken from data.nr_applications
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    35
	// to ensure avoidance of array out of bounds errors
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    36
	var total_index = data.applications.length;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    37
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    38
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    39
	// call immediately the function for acceptance
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    40
	// real iteration is inside
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    41
	setTimeout(function(){
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    42
		var error_happened = false;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    43
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    44
		var application = data.applications[application_index];
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    45
		var current_application = application_index + 1;
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    46
		// regular expression to find a valid scope path inside matching parenthesis
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    47
		var re = /\((\w*)\)/;
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    48
		var scope_path = GLOBAL_LINK.match(re)[1];
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    49
		// the URL is obtained by using the scope path found in the matching parenthesis
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    50
		var url_to_call = GLOBAL_LINK.replace(re, eval("application." + scope_path));
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
		// now we can call the URL found
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
		$.ajax({
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
			async: false,
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    54
			cache: false,
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
			url: url_to_call,
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
			timeout: 10000,
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    57
			success: function(data) {
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    58
				if (data) {
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    59
					// update progress bar percentage and description
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    60
					var percentage = Math.floor(100 * (current_application) / (TOTAL_APPLICATIONS));
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    61
					$("#description_progressbar").html(" Processed application " + application.name + " (" + (current_application) + "/" + TOTAL_APPLICATIONS + ")");
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    62
					$("#applications_progress_bar").progressBar(percentage);
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    63
				}
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    64
			},
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    65
			error: function(XMLHttpRequest, textStatus, errorThrown) {
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    66
				// if there is an error rename the button to Retry and show an error message
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    67
				error_happened = true;
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    68
				$("#button_accept").val("Retry");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    69
				$("#button_accept").fadeIn("slow", function() {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    70
					$("#description_done").html("<strong class='error'> Error encountered, try again</strong>");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    71
				});
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    72
			}
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
		});
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    74
		// if there were no errors, continue the iteration
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    75
		if (!error_happened) {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    76
			// prepare for new iteration and then recall this function
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    77
			application_index++;
1367
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    78
			if (application_index < total_index) {
9899e92121b7 Style fixes in org-accept.js file.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1364
diff changeset
    79
				setTimeout(arguments.callee, 0);
1364
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    80
			}
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    81
			else {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    82
				// all ok, tell the user we are done
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    83
				$("#applications_progress_bar").fadeOut("slow",
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    84
					function() {
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    85
						$("#applications_progress_bar").progressBar(0);
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    86
						$("#button_accept").fadeIn("slow");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    87
					}
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    88
				);
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    89
				$("#description_progressbar").html("");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    90
				$("#description_done").html("<strong>Done!</strong>");
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    91
			}
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    92
		}
b2709805fafe Update org bulk accept script.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1356
diff changeset
    93
	},0);
1356
32d8d83678cd Make various JS methods into their own file
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    94
}