accurator/commit

Added subdomain buttons #260

authorChris Dijkshoorn
Tue Apr 19 19:30:31 2016 +0200
committerChris Dijkshoorn
Tue Apr 19 19:30:31 2016 +0200
commit0c895ff06c23ccb9a121f4a78fcd688be63c4040
treeaaf1e0d46b1e08ae309016987deac4e98837c41d
parent818242b070a429552e3ca0355bf9a3bf0e27584d
Diff style: patch stat
diff --git a/rdf/ui/labels.ttl b/rdf/ui/labels.ttl
index 892691f..bed9957 100644
--- a/rdf/ui/labels.ttl
+++ b/rdf/ui/labels.ttl
@@ -163,6 +163,8 @@ aui:results a auis:UI ;
 	aui:resultsHdrRandomResults "Random results"@en ;
 	aui:resultsTxtNoResults "No results found for "@en ;
 	aui:resultsTxtError "Unfortunately an error has occured"@en ;
+	aui:resultsBtnChooseSubDomain "Choose subdomain"@en ;
+	aui:resultsBtnChangeSubDomain "Change subdomain"@en ;
 	aui:resultsBtnChangeExpertise "Change expertise levels"@en ;
 	aui:resultsLblCluster "Cluster view"@en ;
 	aui:resultsLblList "List view"@en .
@@ -179,6 +181,8 @@ aui:resultsHdrRecommendedResults rdfs:subPropertyOf auis:uiLabel .
 aui:resultsHdrRandomResults rdfs:subPropertyOf auis:uiLabel .
 aui:resultsTxtNoResults rdfs:subPropertyOf auis:uiLabel .
 aui:resultsTxtError rdfs:subPropertyOf auis:uiLabel .
+aui:resultsBtnChooseSubDomain rdfs:subPropertyOf auis:uiLabel .
+aui:resultsBtnChangeSubDomain rdfs:subPropertyOf auis:uiLabel .
 aui:resultsBtnChangeExpertise rdfs:subPropertyOf auis:uiLabel .
 aui:resultsLblCluster rdfs:subPropertyOf auis:uiLabel .
 aui:resultsLblList rdfs:subPropertyOf auis:uiLabel .
diff --git a/rdf/ui/labels_nl.ttl b/rdf/ui/labels_nl.ttl
index ddbe506..98844c8 100644
--- a/rdf/ui/labels_nl.ttl
+++ b/rdf/ui/labels_nl.ttl
@@ -101,6 +101,8 @@ aui:results a auis:UI ;
 	aui:resultsHdrRandomResults "Willekeurige resultaten"@nl ;
 	aui:resultsTxtNoResults "Geen resultaten gevonden voor "@nl ;
 	aui:resultsTxtError "Helaas, er is iets fout gegaan"@nl ;
+	aui:resultsBtnChooseSubDomain "Kies subdomein"@en ;
+	aui:resultsBtnChangeSubDomain "Verander subdomein"@nl ;
 	aui:resultsBtnChangeExpertise "Verander expertise niveaus"@nl ;
 	aui:resultsLblCluster "Cluster weergave"@nl ;
 	aui:resultsLblList "Lijst weergave"@nl .
diff --git a/web/css/accurator.css b/web/css/accurator.css
index c32672d..c3c3d16 100644
--- a/web/css/accurator.css
+++ b/web/css/accurator.css
@@ -248,7 +248,7 @@ Search results
 }
 
 .resultsDivControls {
-	padding-bottom: 10px;
+	padding-top: 10px;
 }
 
 .path-label {
diff --git a/web/html/results.html b/web/html/results.html
index 9f50b8e..1539220 100644
--- a/web/html/results.html
+++ b/web/html/results.html
@@ -42,6 +42,14 @@
 	<div class="container" id="eventsDiv">
 	</div>
 
+	<!-- Controls -->
+	<div class="container">
+		<div class="row">
+			<div class="col-md-12 resultsDivControls">
+			</div>
+		</div>
+	</div>
+
 	<!-- Results -->
 	<div class="container" id="resultsDiv">
 	</div>
diff --git a/web/js/results.js b/web/js/results.js
index 29d2a05..80b8469 100644
--- a/web/js/results.js
+++ b/web/js/results.js
@@ -30,7 +30,6 @@ Layout of the results:
 var display = {
 	layout: "cluster",
 	numberDisplayedItems: 4,
-	showControls: true
 }
 
 // Initialize page
@@ -54,7 +53,7 @@ function resultsInit() {
 	});
 
 	function drawPage(userData) {
-		var ui, target, labels;
+		var ui, target, labels, domainData;
 		var user = userData.user;
 		var userName = getUserName(user);
 		var realName = userData.real_name;
@@ -63,7 +62,8 @@ function resultsInit() {
 		populateNavbar(userName, [{link:"profile.html",	name:"Profile"}], locale);
 
 		domainSettings(domain)
-		.then(function(domainData) {
+		.then(function(data) {
+			domainData = data; // enable reuse in next function
 			ui = domainData.hasUI + "results";
 			target = domainData.hasTarget;
 
@@ -71,7 +71,8 @@ function resultsInit() {
 		})
 		.then(function(labelData) {
 			labels = initLabels(labelData);
-			labels.realName = realName; // Add realname to labels for rendering
+			labels.realName = realName; // add realname to labels for rendering
+			domainButton(domainData, labels);
 			addButtonEvents(user, target, labels);
 
 			return events(user, labels);
@@ -100,6 +101,9 @@ function initLabels(labelData) {
 		resultsTxtFirst: labelData.resultsTxtFirst,
 		resultsTxtNoResults: labelData.resultsTxtNoResults,
 		resultsTxtError: labelData.resultsTxtError,
+		resultsBtnChooseSubDomain: labelData.resultsBtnChooseSubDomain,
+		resultsBtnChangeSubDomain: labelData.resultsBtnChangeSubDomain,
+		resultsBtnChangeExpertise: labelData.resultsBtnChangeExpertise,
 		resultsLblCluster: labelData.resultsLblCluster,
 		resultsLblList: labelData.resultsLblList
 	};
@@ -107,34 +111,6 @@ function initLabels(labelData) {
 	return labels;
 }
 
-// Add button events in the navbar
-function addButtonEvents(user, target, labels) {
-	$("#navbarBtnRecommend").click(function() {
-		// check if not already there
-		if (!(document.location.href.indexOf("results.html?user=" + user)  > -1)) {
-			document.location.href = "results.html?user=" + user;
-		} else {
-			// clear current and get new results
-			$("#resultsDiv").empty();
-			results(target, labels);
-		}
-	});
-	// search on pressing enter
-	$("#navbarInpSearch").keypress(function(event) {
-		if (event.which == 13) {
-			var query = encodeURIComponent($("#navbarInpSearch").val());
-
-			document.location.href = "results.html?query=" + query;
-		}
-	});
-	$("#navbarBtnSearch").click(function() {
-		var query = encodeURIComponent($("#navbarInpSearch").val());
-
-		document.location.href = "results.html?query=" + query;
-	});
-}
-
-
 function events(user, labels) {
 	return $.getJSON("annotations", {
 		uri:user,
@@ -182,7 +158,7 @@ function search(query, labels) {
 		var clusters = processClusters(data, labels, query);
 		// if there are any clusters retrieved, then draw results
 		if (clusters.length > 0) {
-			controls(clusters, labels); // add control buttons to change layout
+			resultLayoutButtons(clusters, labels); // add control buttons to change layout
 			drawResults(clusters);
 		}
 	}, function(data) {
@@ -207,7 +183,7 @@ function recommend(query, labels, target) {
 	$.when(recommendation, random)
 	.then(function(clusters, randomCluster) {
 		clusters.push(randomCluster);
-		controls(clusters, labels); // add control buttons to change layout
+		resultLayoutButtons(clusters, labels); // add control buttons to change layout
 		drawResults(clusters);
 	});
 }
@@ -218,7 +194,7 @@ function random(query, labels, target, noResults) {
 	.then(function(cluster) {
 		var clusters = [];
 		clusters[0] = cluster;
-		controls(clusters, labels);
+		resultLayoutButtons(clusters, labels);
 		drawResults(clusters);
 	}, function(data) {
 		statusMessage(labels.resultsTxtError, data.responseText);
@@ -394,30 +370,17 @@ function statusMessage(header, text){
 }
 
 /*******************************************************************************
-Controls
+Buttons
 Code for adding buttons controlling the layout
 *******************************************************************************/
-
-// Add the container for the controls that change the display of the items
-function controls(results, labels) {
-	if(display.showControls) {
-		$("#resultsDiv").prepend(
-			$.el.div({'class':'row'},
-				$.el.div({'class':'col-md-12 resultsDivControls'}))
-		);
-		resultLayoutButtons(results, labels);
-	}
-}
-
-// Add the buttons and the click functionality for changing the display
 function resultLayoutButtons(results, labels) {
-	$(".resultsDivControls").append(
-		$.el.div({'class':'btn-group'},
-			$.el.button({'class':'btn btn-default',
-						 'id':'resultsBtnLayout'}))
+	// add button
+	$(".resultsDivControls").prepend(
+		$.el.button({'class':'btn btn-default',
+					 'id':'resultsBtnLayout'})
 	);
-	setLayoutButton(labels);
 
+	// add click event
 	$("#resultsBtnLayout").click(function() {
 		var resultNodes = document.getElementById("resultsDiv");
 
@@ -427,22 +390,87 @@ function resultLayoutButtons(results, labels) {
 		}
 
 		display.layout = (display.layout === "list") ? "cluster" : "list";
-		controls(results, labels);
+		setLayoutButtons(results, labels); // wow, semi recursion in js...
 		drawResults(results);
 	});
+
+	// add text
+	setLayoutButtons(results, labels)
 }
 
-// Set the text of the display button depending on the view that is rendered
-function setLayoutButton(labels) {
+
+function setLayoutButtons(results, labels) {
+	// set the text
 	if(display.layout === "list") {
 		$("#resultsBtnLayout").html(
-			$.el.span(labels.resultsLblCluster + ' ',
-			$.el.span({'class':'glyphicon glyphicon-th-large'}))
+			[$.el.span(labels.resultsLblCluster + ' '),
+			$.el.span({'class':'glyphicon glyphicon-th-list'})]
 		);
 	} else {
 		$("#resultsBtnLayout").html(
-			$.el.span(labels.resultsLblList + ' ',
-			$.el.span({'class':'glyphicon glyphicon-th-large'}))
+			[$.el.span(labels.resultsLblList + ' '),
+			$.el.span({'class':'glyphicon glyphicon-th'})]
 		);
 	}
 }
+
+// Add the buttons and the click functionality for changing the display
+function domainButton(domainData, labels) {
+	console.log(arguments);
+	if (domainData.subDomains) {
+		// show option to select more specific subdomain
+		addDomainButton(labels.resultsBtnChooseSubDomain);
+		$("#resultsBtnSubDomains").click(function() {
+			document.location.href = "domain.html?domain=" + domainData.domain;
+		});
+	} else if (domainData.requires) {
+		// show button for providing expertise values
+		addDomainButton(labels.resultsBtnChangeExpertise);
+		$("#resultsBtnSubDomains").click(function() {
+			document.location.href = "expertise.html";
+		});
+	} else if (domainData.superDomain) {
+		// show option to select other subdomain
+		addDomainButton(labels.resultsBtnChangeSubDomain);
+		$("#resultsBtnSubDomains").click(function() {
+			document.location.href = "domain.html?domain=" + domainData.superDomain;
+		});
+	}
+}
+
+function addDomainButton(label) {
+	$(".resultsDivControls").append(
+		$.el.button({
+			'class':'btn btn-default',
+			'id':'resultsBtnSubDomains'},
+			label
+		)
+	);
+}
+
+function addButtonEvents(user, target, labels) {
+	// add button events in the navbar
+	$("#navbarBtnRecommend").click(function() {
+		// check if not already there
+		if (!(document.location.href.indexOf("results.html?user=" + user)  > -1)) {
+			document.location.href = "results.html?user=" + user;
+		} else {
+			// clear current and get new results
+			$("#resultsDiv").empty();
+			results(target, labels);
+		}
+	});
+	// search on pressing enter
+	$("#navbarInpSearch").keypress(function(event) {
+		if (event.which == 13) {
+			var query = encodeURIComponent($("#navbarInpSearch").val());
+
+			document.location.href = "results.html?query=" + query;
+		}
+	});
+	$("#navbarBtnSearch").click(function() {
+		var query = encodeURIComponent($("#navbarInpSearch").val());
+
+		document.location.href = "results.html?query=" + query;
+	});
+}