virgil/commit

UPDATE use separate API call for the measurements of each reaction

authorMichiel Hildebrand
Tue Jun 4 17:22:39 2013 +0200
committerMichiel Hildebrand
Tue Jun 4 17:22:39 2013 +0200
commitae72d1941feea22f1e4fbc557a0e136b271ece50
tree13864ecad1ad75247d49a35e1a15f3cb1ff292ce
parent6372062aa71cc7bb7f30800a3970f4909dd446cc
Diff style: patch stat
diff --git a/api/measurements.pl b/api/measurements.pl
index fbc151a..0a81a37 100644
--- a/api/measurements.pl
+++ b/api/measurements.pl
@@ -9,6 +9,7 @@
 :- use_module(library(count)).
 
 :- http_handler(cliopatria(aers/api/measurements/prr), http_measurements_prr, []).
+:- http_handler(cliopatria(aers/api/measurements/prov), http_measurements_prov, []).
 
 
 
@@ -16,12 +17,25 @@ http_measurements_prr(Request) :-
 	http_parameters(Request,
 			['drugnames[]'(Drugs,
 				   [list(atom)]),
+			 reaction(Reaction,
+				  [atom
+				  ])
+			]),
+	prr(Drugs, Reaction, PRR, Prov),
+	reply_json(json([reaction=Reaction,
+			 prr=json([value=PRR, prov=Prov])])).
+
+http_measurements_prov(Request) :-
+	http_parameters(Request,
+			['drugnames[]'(Drugs,
+				       [list(atom)]),
 			 'reactions[]'(Reactions,
 				       [list(atom)
 				       ])
 			]),
-	prr_per_reaction(Reactions, Drugs, PRRs),
-	reply_json(PRRs).
+	prr_per_reaction(Reactions, Drugs, JSON),
+	reply_json(JSON).
+
 
 
 prr_per_reaction([], _, []).
diff --git a/web/html/wizard.html b/web/html/wizard.html
index 9ebaa6f..5b4d8ab 100644
--- a/web/html/wizard.html
+++ b/web/html/wizard.html
@@ -74,6 +74,7 @@
 				<li data-target="#drugs" class="active"><span class="badge">1</span>Drug mentions<span class="chevron"></span></li>
 				<li data-target="#reactions"><span class="badge">2</span>Reactions<span class="chevron"></span></li>
 				<li data-target="#measurements"><span class="badge">3</span>Measurements<span class="chevron"></span></li>
+				<li data-target="#export"><span class="badge">4</span>Export prov<span class="chevron"></span></li>
 			</ul>
 			<div class="actions">
 				<button class="btn btn-mini btn-prev"> <i class="icon-arrow-left"></i>Prev</button>
@@ -153,7 +154,7 @@
 			</div>
 			
 			<div class="step-pane" id="measurements">
-				<section class="loader">
+				<section>
 					<h4>Select measurements</h4>
 					<table class="table">
 						<thead><tr><th>Reaction</th><th>PRR</th></tr></thead>
@@ -162,6 +163,15 @@
 				</section>
 			</div>
 			
+			<div class="step-pane" id="export">
+				<section class="loader">
+					<h4>Export Provenance</h4>
+				</section>
+				<div>
+					<img src="http://www.w3.org/Icons/SW/Buttons/sw-prov-magenta.png">
+				</div>	
+			</div>
+			
 		</div>
 
 	</div>	
@@ -176,6 +186,7 @@
 			synonymsURL = '../aers/api/drug/synonym/mentions',
 			reactionsURL = '../aers/api/reactions';
 			prrURL = '../aers/api/measurements/prr';
+			provURL = '../aers/api/measurements/prov';
 		
 		$(function() {
 			function getURLParameter(name) {
@@ -272,30 +283,61 @@
 			$.fn.updateMeasurements = function() {
 				var drugnames = getDrugNames(),
 					reactions = getReactions(),
-					table = $(this).find('tbody'),
-					loader = $(this).find(".spinner");
+					table = $(this).find('tbody');
 				
 				table.html("");
-				loader.show();
+				for (var i=0; i < reactions.length; i++) {
+					var reaction = reactions[i];
+					$('<tr><td class="reaction">'+reaction+'</td>'
+					 +'<td class="prr"><img src="../img/spinner.gif" alt="Loading"/></td>'
+					 +'</tr>')
+					.appendTo(table)
+					.fetchMeasurements(drugnames, reaction);	
+				}
+			};
+				
+			$.fn.fetchMeasurements = function(drugnames, reaction) {
+				var row = $(this);
 				
 				$.ajax(prrURL, {
 					dataType:"json",
 					type:"POST",
 					data:{
 						drugnames:drugnames,
-						reactions:reactions
+						reaction:reaction
 						},
+					error: function() {
+						row.find(".prr").html("");
+					},
+					success: function(o) {
+						row.find(".prr").html(o.prr.value);
+					}
+				});
+			};
+			
+			$.fn.updateExport = function() {
+				var drugnames = getDrugNames(),
+					reactions = getReactions(),
+					loader = $(this).find(".spinner");
+				
+				loader.show();
+				$.ajax(provURL, {
+					dataType:"json",
+					type:"POST",
+					data:{
+						drugnames:drugnames,
+						reactions:reactions
+					},
 					error: function() {
 						loader.hide();
 					},
 					success: function(o) {
+						console.log(o);
 						loader.hide();
-						$(o).each(function(i,e) {
-							table.append('<tr><td>'+e.reaction+'</td><td>'+e.prr+'</td></tr>');
-						})
 					}
 				});
-			}
+				
+			};
 			
 			
 			// setup the checkbox toggle buttons
@@ -333,8 +375,13 @@
 				else if(o.step==2&&o.direction=="next") {
 					$("#measurements").updateMeasurements();
 				}
+				else if(o.step==3&&o.direction=="next") {
+					$("#export").updateExport();
+				}
 			});
 			
+			
+			
 		});
 		
 	</script>