[Debtags-commits] [svn] r1981 - in web/trunk: . js

Enrico Zini enrico at costa.debian.org
Mon Oct 2 20:38:59 UTC 2006


Author: enrico
Date: Mon Oct  2 20:38:58 2006
New Revision: 1981

Modified:
   web/trunk/edit.html
   web/trunk/js/debtags.js
   web/trunk/main.css
Log:
Implemented suggested tags (needs new debtagsd and sugg cgi)
Implemented selection of package name


Modified: web/trunk/edit.html
==============================================================================
--- web/trunk/edit.html	(original)
+++ web/trunk/edit.html	Mon Oct  2 20:38:58 2006
@@ -12,14 +12,38 @@
   <script src="js/debtags.js"></script>
   <script type="text/javascript">
   <!--
+var pkg = false;
 var origtags = new Tagset();
-// FIXME: this is for testing
-origtags.addAll(["use::editing", "implemented-in::c++"]);
 var tags = origtags.copy();
 var voc = new Vocabulary(fdata, tdata);
 var relevant = new Array();
+var suggested = new Array();
 var atcurfacet = "use";
 
+function setPackage(p)
+{
+	pkg = p;
+
+	render("pkgname", pkg);
+	// TODO: get origtags
+	origtags.addAll(["use::editing", "implemented-in::c++"]);
+	// TODO: get short and long description
+	// TODO: validate package name
+	updateAll();
+
+	fireSUGGQuery(pkg, function(tags){
+			suggested = new Array();
+			for (i in tags)
+				suggested.push(tags[i][0]);
+			updateSuggested();
+	}, function(tags) {
+			suggested = new Array();
+			for (i in tags)
+				suggested.push(tags[i][0]);
+			updateSuggested();
+	}, true);
+}
+
 function addTag(tag)
 {
 	tags.add(tag);
@@ -44,6 +68,7 @@
 	updateSelected();
 	updateAvailable();
 	updateRelevant();
+	updateSuggested();
 }
 
 function updateSelected()
@@ -108,14 +133,38 @@
 	render("reltagsList", b);
 }
 
+function updateSuggested()
+{
+	var b = "<ul>\n";
+	var count = 0;
+	for (var i in suggested) {
+		var tag = suggested[i];
+		if (tags.has(tag)) continue;
+		if (++count > 10) break;
+		td = voc.tagData(tag);
+		if (td == null) continue;
+		b += "<li><p><span class='tag' onClick='addTag(\""+tag+"\")'>"+tag+": "+td[0]+"</span></p>"+td[1]+"</li>\n";
+	};
+	b += "</ul>\n";
+	render("suggtagsList", b);
+}
+
 function updateVisibility()
 {
-	var sel = document.selTagPanel.selTagPanel;
-  var curtagpanel = sel.options[sel.selectedIndex].value;
-  setVisible("alltags", curtagpanel == "all");
-  setVisible("suggtags", curtagpanel == "sugg");
-  setVisible("reltags", curtagpanel == "rel");
-  setVisible("disctags", curtagpanel == "disc");
+	if (pkg)
+	{
+		var sel = document.selTagPanel.selTagPanel;
+		var curtagpanel = sel.options[sel.selectedIndex].value;
+		setVisible("alltags", curtagpanel == "all");
+		setVisible("suggtags", curtagpanel == "sugg");
+		setVisible("reltags", curtagpanel == "rel");
+		setVisible("disctags", curtagpanel == "disc");
+		setVisible("editor", true);
+		setVisible("begin", false);
+	} else {
+		setVisible("editor", false);
+		setVisible("begin", true);
+	}
 }
 
 function onSelACF(facet)
@@ -143,6 +192,7 @@
 		document.relsearch.submit.disabled = false;
 	}, true);
 }
+
   //-->
   </script>
 </head>
@@ -159,68 +209,82 @@
     <p>Don't forget to submit your changes when you are happy with them, and to remove the "not-yet-tagged" tags.</p>
   </div>
 
-  <div id="curpackage">
-    <p><b>PACKAGE</b> - <b>SHORTDESC</b></p>
-    <div class="ldesc">
-      LONGDESC
-    </div>
-    <a href="http://packages.debian.org/PACKAGE">Debian page</a>
-    <a href="http://packages.qa.debian.org/PACKAGE">Debian QA page</a>
-    <div id="curpatch">
-    </div>
-    <div id="curtags">
-    </div>
-  </div>
-
-  <form name="patch" id="patchForm" method="get">
-  <input type="hidden" name="pkg" value="PACKAGE">
-  <input type="hidden" name="patch" value="">
-  </form>
-
-  <div style="clear: both"></div>
-
-  <p>Current tag view: 
-	<form name="selTagPanel">
-		<select name="selTagPanel" onChange="updateVisibility()">
-			<option value="all" selected="true">All tags</option>
-			<option value="sugg">Suggested tags</option>
-			<option value="rel">Relevant tags</option>
-			<option value="disc">Discriminant tags</option>
-		</select></p>
-	</form>
+	<div id="begin">
+		<form name="begin" onSubmit="return false;">
+			Package to edit: <input type="text" name="pkg" onChange="setPackage(this.value)" />
+			<input type="button" name="submit" value="Search" onClick="setPackage(this.form.pkg.value)" />
+		</form>
+	</div>
+
+	<div id="editor">
+		<div id="curpackage">
+			<p><span id="pkgname"> </span> - <b>SHORTDESC</b></p>
+			<div class="ldesc">
+				LONGDESC
+			</div>
+			<a href="http://packages.debian.org/PACKAGE">Debian page</a>
+			<a href="http://packages.qa.debian.org/PACKAGE">Debian QA page</a>
+			<div id="curpatch">
+			</div>
+			<div id="curtags">
+			</div>
+		</div>
 
-  <div id="taglists">
-	  <div id="alltags">
-		  <div id="atfacets">
-		  </div>
-		  <div id="attags">
-		  </div>
-	  </div>
-	  <div id="suggtags">
-		  TODO: list of tags suggested by whatever package-dependent
-		  tag suggesting method the server is implementing.
-	  </div>
-	  <div id="reltags">
-		  <form name="relsearch" onSubmit="return false;">
-			<div id="relsearch">
-				Search: <input type="text" name="keys" value='' onChange="onRelSearch(this)" />
-				<input type="button" name="submit" value="Search" onClick="onRelSearch(this.form.keys)" />
-			</div>
-		  </form>
-		  <div id="reltagsList">
-		  </div>
-	  </div>
-	  <div id="disctags">
-		  TODO: all tags by discriminange, or all tags by discriminance
-		  after one of more of the tags currently assigned to the
-		  package are selected.
-	  </div>
-  </div>
+		<form name="patch" id="patchForm" method="get">
+		<input type="hidden" name="pkg" value="PACKAGE">
+		<input type="hidden" name="patch" value="">
+		</form>
+
+		<div style="clear: both"></div>
+
+		<p>Current tag view: 
+		<form name="selTagPanel">
+			<select name="selTagPanel" onChange="updateVisibility()">
+				<option value="all" selected="true">All tags</option>
+				<option value="sugg">Suggested tags</option>
+				<option value="rel">Relevant tags</option>
+				<option value="disc">Discriminant tags</option>
+			</select></p>
+		</form>
+
+		<div id="taglists">
+			<div id="alltags">
+				<div id="atfacets">
+				</div>
+				<div id="attags">
+				</div>
+			</div>
+			<div id="suggtags">
+				Tags suggested by the server:
+				<div id="suggtagsList">
+				</div>
+			</div>
+			<div id="reltags">
+				<form name="relsearch" onSubmit="return false;">
+				<div id="relsearch">
+					Search: <input type="text" name="keys" value='' onChange="onRelSearch(this)" />
+					<input type="button" name="submit" value="Search" onClick="onRelSearch(this.form.keys)" />
+				</div>
+				</form>
+				<div id="reltagsList">
+				</div>
+			</div>
+			<div id="disctags">
+				TODO: all tags by discriminange, or all tags by discriminance
+				after one of more of the tags currently assigned to the
+				package are selected.
+			</div>
+		</div>
+	</div>
 
   <script type="text/javascript">
   <!--
   // Initialisation functions
+
+	var query = getQuery();
+	if (query.pkg) setPackage(query.pkg);
   updateAll();
+
   -->
   </script>
   

Modified: web/trunk/js/debtags.js
==============================================================================
--- web/trunk/js/debtags.js	(original)
+++ web/trunk/js/debtags.js	Mon Oct  2 20:38:58 2006
@@ -123,6 +123,32 @@
 	);
 }
 
+function fireSUGGQuery(pkg, progressFunc, finalFunc, async)
+{
+	// Build the new search base
+	runRequest(QUERY_BASE + "/sugg/"+pkg,
+		function(lines) {
+			var ts = new Array();
+		  for (i in lines)
+			{
+				var fields = lines[i].split(" ");
+				ts.push(fields);
+			}
+			progressFunc(ts);
+		},
+		function(lines) {
+			var ts = new Array();
+		  for (i in lines)
+			{
+				var fields = lines[i].split(" ");
+				ts.push(fields);
+			}
+			finalFunc(ts);
+		},
+		async
+	);
+}
+
 function firePKGSQuery(ts, progressFunc, finalFunc, async)
 {
 	var tags = new Array();
@@ -452,6 +478,18 @@
 		node.style.display = "none";
 }
 
+function getQuery()
+{
+	var query = window.location.search.substring(1);
+	query = query.split('&');
+	var res = {};
+	for (i in query)
+	{
+		var q = query[i].split('=');
+		res[unescape(q[0])] = unescape(q[1]);
+	}
+	return res;
+}
 
 var wanted = new Tagset();
 var unwanted = new Tagset();

Modified: web/trunk/main.css
==============================================================================
--- web/trunk/main.css	(original)
+++ web/trunk/main.css	Mon Oct  2 20:38:58 2006
@@ -105,6 +105,17 @@
 	cursor: pointer;
 }
 
+#alltags { display: none; }
+#suggtags { display: none; }
+#reltags { display: none; }
+#disctags { display: none; }
+#editor { display: none; }
+#begin { display: none; }
+
+#pkgname {
+	font-weight: bold;
+}
+
 #atfacets {
 	float: right;
 	width: 33%;
@@ -113,6 +124,10 @@
 	margin: 0;
 	padding: 0;
 }
+#suggtagsList li p {
+	margin: 0;
+	padding: 0;
+}
 #reltagsList li p {
 	margin: 0;
 	padding: 0;



More information about the Debtags-commits mailing list