yaz/commit

fix game

authorMichiel Hildebrand
Wed Feb 2 17:06:35 2011 +0100
committerMichiel Hildebrand
Wed Feb 2 17:06:35 2011 +0100
commita1d7c3bc176fa225c75e84ae1142776edf82361f
treec5cf53d796cb45deba53211c8831dcb988ef181f
parent722ea99ce72d8ae598369fd90739a15dd1c614a7
Diff style: patch stat
diff --git a/applications/yaz_game.pl b/applications/yaz_game.pl
index 02a538d..b0710d1 100644
--- a/applications/yaz_game.pl
+++ b/applications/yaz_game.pl
@@ -298,7 +298,7 @@ html_page_yui(Game, URL, User, PlayHead, Players, Tags) -->
 						 })),
 		  \js_support_functions(Game, User, DataServer),
 		  \js_call('Y.later'(RequestInterval, symbol('Y'),
-				     symbol(fetchData), symbol(null), symbol(true))),
+				     symbol(fetchData), symbol({}), symbol(true))),
 		  \js_call('videoPlayer.render'('#videoplayer')),
 		  \js_input_method
  		]).
@@ -307,7 +307,7 @@ js_support_functions(Game, User, DataServer) -->
 	js_function_decl(fetchData, [e],
 			 \[
 '   var data = {game:"',Game,'",user:"',User,'",playhead:videoPlayer.getTime()*1000};
-    if(e) {data.tag=e.label;}
+    if(e.tag) {data.tag=e.tag;}
     Y.io("',DataServer,'", {data: data,
 			    on: {success:handleResponse}
 			   });\n'
@@ -481,10 +481,12 @@ matched_json_term(_,  @false).
 %
 %	Tag is entered by User during Game.
 
-user_matched_tag(Game, User, Playhead, Interval, Annotation, Match) :-
+user_matched_tag(Game, User, Playhead, Interval, Annotation, Tag, Time, Match) :-
 	Start is Playhead-Interval,
   	rdf(Annotation, pprime:videoPlayhead, literal(between(Start,Playhead), _), Game),
 	rdf(Annotation, pprime:creator, User),
+	rdf(Annotation, rdf:value, literal(Tag)),
+	rdf(Annotation, pprime:videoPlayhead, literal(Time), _),
 	matched_json_term(Annotation, Match).
 
 %%	tag_match(+Game, +User, +Tag, +VideoTime, +Interval,
@@ -536,9 +538,9 @@ http_game_data(Request) :-
 		active_player(Game, P, Name, Score),
 		Players),
 
-	TagObj = json([annotation=A, match=Match]),
+	TagObj = json([annotation=A, label=Label, time=Time, match=Match]),
 	findall(TagObj,
-		user_matched_tag(Game, User, Playhead, Interval, A, Match),
+		user_matched_tag(Game, User, Playhead, Interval, A, Label, Time, Match),
 		Tags),
 
 	reply_json(json([user=User, players=Players, tags=Tags])).
diff --git a/web/js/game/input.js b/web/js/game/input.js
index ef90959..31b5513 100644
--- a/web/js/game/input.js
+++ b/web/js/game/input.js
@@ -27,9 +27,6 @@ YUI.add('game-input', function(Y) {
 					return tags;
 				}
 			}
-		},
-		autoAddTag: {
-			value: true
 		}
 	};
 
@@ -56,13 +53,18 @@ YUI.add('game-input', function(Y) {
 		
 		updateTags : function(tags) {
 			for(var i=0; i < tags.length; i++) {
-				var tag = tags[i];
-				console.log(tag);
-				var node = this._tagNode(tag.annotation);
-				if(tag.score) {
-					node.one('.score').setContent(tag.score);
+				var tag = tags[i],
+					node = this._tagNode(tag.annotation);
+					
+				if(!node) {
+					this._addTag(tag);
+				} else if(tag.match) {
+					var match = tag.match;
+					if(match.score) {
+						node.one('.score').setContent(match.score);
+					}
+					this._setStyle(node, match);
 				}
-				this._setStyle(node, tag);
 			}
 		},
 	
@@ -80,28 +82,30 @@ YUI.add('game-input', function(Y) {
 			var tags = this.get("tags");
  			if(tags) {
 				for(var i=0; i < tags.length; i++) {
-					this.addTag(tags[i]);
+					var tag = tags[i];
+					tag.node = Y.Node.create(this.formatTag(tag));
+					this._setStyle(tag.node, tag.match);
+					this.list.prepend(tag.node);
 				}
 			}
+			this.set("tags", tag);
 		},
 		
 		formatTag : function(tag) {
 			var score = (tag.match&&tag.match.score) ? tag.match.score : "";
-			return = '<li><span class="label">'
-				+tag.label+'</span>'
+			return '<li><span class="label">'
+				+tag.label+'</span> '
 				+'<span class="score">'+score+'</span></li>';
 		},
 		
-		addTag : function(tag) {
-			this.input.set("value", "");
+		_addTag : function(tag) {
 			tag.node = Y.Node.create(this.formatTag(tag));
-			this._setStyle(tag.node, tag);
 			this.set("tags", tag);
+			this._setStyle(tag.node, tag.match);
 			this.list.prepend(tag.node);
 		},
 		
-		_setStyle : function(node, tag) {
-			var match = tag.match;
+		_setStyle : function(node, match) {
 			if(match) {
 				node.addClass(match.type);
 				if(match.order===1) {
@@ -113,19 +117,17 @@ YUI.add('game-input', function(Y) {
 		_tagNode : function(id) {
 			var tags = this.get("tags");
 			for (var i=0; i < tags.length; i++) {
-				if(tags[i].annotation == id) {
+				if(tags[i].annotation === id) {
 					return tags[i].node;
 				}
 			}
-		}
+		},
 		
 		_onKeyDown : function(e) {
 			if(e.charCode === 13) {
-				var tag = this.input.get("value");
+				var tag = {tag:this.input.get("value")};
+				this.input.set("value", "");
 				this.fire("enter", tag);
-				if(this.get("autoAddTag")) {
-					this.addTag(tag);
-				}
 			}
 		}
 	});